<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>network automation &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/network-automation/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Wed, 14 Oct 2026 02:44:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Network Automation with Ansible: A Practical Introduction for Network Engineers</title>
		<link>https://www.bestdevops.com/an-introduction-to-network-automation-with-ansible/</link>
					<comments>https://www.bestdevops.com/an-introduction-to-network-automation-with-ansible/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 18 Feb 2020 05:23:03 +0000</pubDate>
				<category><![CDATA[Ansible]]></category>
		<category><![CDATA[CLI commands]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IT-technolgoy]]></category>
		<category><![CDATA[network automation]]></category>
		<category><![CDATA[Software-Market]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=10666</guid>

					<description><![CDATA[Learn how to use Ansible for network automation, including directory structure, playbook design, and a working example that collects ARP table data from a Cisco IOS switch.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ansible is both an automation language and the engine that runs it. For network engineers, it offers an unusually gentle on-ramp: the configuration syntax is human-readable YAML, the documentation is thorough, and the large community has produced a wealth of tutorials and modules that cover most major vendor platforms.</p>



<h2 class="wp-block-heading">Why Ansible Works Well for Network Automation</h2>



<p class="wp-block-paragraph">Two properties make Ansible particularly attractive in a network context:</p>



<ul class="wp-block-list">
<li><strong>Agentless operation.</strong> Ansible communicates with network devices over SSH (or a vendor API where available). There is nothing to install on the managed device — a major advantage when you are working with switches and routers that do not expose a general-purpose OS.</li>
<li><strong>Low barrier to entry.</strong> YAML playbooks read almost like plain English. Network engineers who are comfortable with incremental learning — picking up IOS features as needed, for example — adapt quickly to Ansible&#8217;s model.</li>
</ul>



<p class="wp-block-paragraph">Ansible runs on a <em>control node</em> (a Linux host or WSL instance) and issues commands to one or many network devices simultaneously. Its behaviour is governed by plain-text configuration files, making it easy to version-control your automation alongside your other infrastructure code.</p>



<h2 class="wp-block-heading">Key Concepts Before You Start</h2>



<ul class="wp-block-list">
<li><strong>Inventory</strong> — a list of the devices Ansible manages, organised into groups.</li>
<li><strong>Playbook</strong> — a YAML file describing one or more <em>plays</em>, each containing one or more <em>tasks</em>.</li>
<li><strong>Module</strong> — a reusable unit of work. Network modules such as <code>ios_command</code>, <code>eos_command</code>, and the vendor-agnostic <code>cli_command</code> handle interaction with specific platforms.</li>
<li><strong>Variables</strong> — stored in <code>group_vars</code> and <code>host_vars</code> directories and merged at run time, giving you fine-grained control over per-device or per-group settings.</li>
</ul>



<h2 class="wp-block-heading">Recommended Directory Structure</h2>



<p class="wp-block-paragraph">You can run Ansible with a single flat file, but that quickly becomes unmanageable. A structured layout separates concerns and scales cleanly as your device count grows. The following layout is used in the examples below:</p>


<pre class="wp-block-code"><span><code class="hljs language-css">.
├── <span class="hljs-selector-tag">ansible</span><span class="hljs-selector-class">.cfg</span>
├── <span class="hljs-selector-tag">group_vars</span>
│   └── <span class="hljs-selector-tag">IOS_switches</span><span class="hljs-selector-class">.yml</span>
├── <span class="hljs-selector-tag">host_vars</span>
│   └── <span class="hljs-selector-tag">test_sw</span><span class="hljs-selector-class">.yml</span>
├── <span class="hljs-selector-tag">inventory</span><span class="hljs-selector-class">.yml</span>
└── <span class="hljs-selector-tag">sh_arp</span><span class="hljs-selector-class">.yml</span></code></span></pre>


<h3 class="wp-block-heading">ansible.cfg</h3>



<p class="wp-block-paragraph">This INI-format file overrides Ansible defaults. The most important settings for network automation are disabling fact gathering (which is designed for Linux hosts, not network devices) and pointing Ansible at your inventory file.</p>


<pre class="wp-block-code"><span><code class="hljs language-php">&#91;defaults]
gathering = explicit
inventory = inventory.yml
retry_files_enabled = <span class="hljs-keyword">False</span></code></span></pre>


<h3 class="wp-block-heading">group_vars/IOS_switches.yml</h3>



<p class="wp-block-paragraph">Variables in <code>group_vars</code> apply to every host in the named group. Here we set the connection type to <code>network_cli</code>, declare the OS as <code>ios</code>, and supply credentials. In production, use Ansible Vault or SSH keys rather than plain-text passwords.</p>


<pre class="wp-block-code"><span><code class="hljs language-php">---
<span class="hljs-comment"># IOS_switches variables</span>
ansible_connection: network_cli
ansible_network_os: ios
ansible_become: yes
ansible_become_method: enable
ansible_become_password: <span class="hljs-string">"foobar"</span>

ansible_user: tester
ansible_ssh_pass: foobar</code></span></pre>


<h3 class="wp-block-heading">host_vars/test_sw.yml</h3>



<p class="wp-block-paragraph">Host-level variables override group variables for a specific device. A management IP address and hostname are the minimum useful entries.</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">---</span>
# <span class="hljs-selector-tag">test_sw</span> <span class="hljs-selector-tag">variables</span>
<span class="hljs-selector-tag">ipaddr</span>: 192<span class="hljs-selector-class">.168</span><span class="hljs-selector-class">.1</span><span class="hljs-selector-class">.108</span>
<span class="hljs-selector-tag">hostname</span>: <span class="hljs-selector-tag">test_sw</span></code></span></pre>


<h3 class="wp-block-heading">inventory.yml</h3>



<p class="wp-block-paragraph">The inventory file lists your devices and organises them into groups. A single device can belong to multiple groups, which is useful when you want to target switches by both vendor OS and network role.</p>


<pre class="wp-block-code"><span><code class="hljs">---
all:
  children:
    IOS_switches:
      hosts:
        test_sw:
    IOS_routers:
      hosts:
        router1:
    access:
      hosts:
        test_sw:
    core:
      hosts:
        router1:</code></span></pre>


<h2 class="wp-block-heading">Writing Your First Playbook: Collecting the ARP Table</h2>



<p class="wp-block-paragraph">A good first automation task is read-only data collection — it is safe, immediately useful, and gives you a baseline to compare against. The playbook below, <code>sh_arp.yml</code>, issues <code>show arp</code> to every host in the <code>IOS_switches</code> group and prints the output.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">---
- name: Gather ARP data
  <span class="hljs-attr">hosts</span>: IOS_switches
  <span class="hljs-attr">tasks</span>:
    - name: <span class="hljs-string">"Task 1: Get output of show arp on IOS"</span>
      <span class="hljs-attr">ios_command</span>:
        commands: <span class="hljs-string">"show arp"</span>
      <span class="hljs-attr">register</span>: cli_result

    - name: <span class="hljs-string">"Task 2: Display stdout_lines&#91;0]"</span>
      <span class="hljs-attr">debug</span>:
        msg: <span class="hljs-string">"{{ cli_result.stdout_lines&#91;0] }}"</span></code></span></pre>


<p class="wp-block-paragraph">Key points about the playbook structure:</p>



<ul class="wp-block-list">
<li><code>ios_command</code> sends a CLI command to an IOS device and returns the output as a string.</li>
<li><code>register: cli_result</code> saves the module&#8217;s return value into a variable for use in later tasks.</li>
<li>The <code>debug</code> module prints the value of <code>cli_result.stdout_lines[0]</code> — a list of output lines from the first (and only) command issued.</li>
</ul>



<h3 class="wp-block-heading">Running the Playbook</h3>


<pre class="wp-block-code"><span><code class="hljs">$ ansible-playbook sh_arp.yml</code></span></pre>


<p class="wp-block-paragraph">Expected output:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">PLAY &#91;Gather ARP data] ***************************************************

TASK &#91;Task <span class="hljs-number">1</span>: Get output of show arp on IOS] *****************************
ok: &#91;test_sw]

TASK &#91;Task <span class="hljs-number">2</span>: Display stdout_lines&#91;<span class="hljs-number">0</span>]] ***********************************
ok: &#91;test_sw] =&gt; {
    <span class="hljs-string">"msg"</span>: &#91;
        <span class="hljs-string">"Protocol  Address     Age (min)  Hardware Addr   Type  Interface"</span>,
        <span class="hljs-string">"Internet  192.168.1.108       -  bcc4.933e.49c0  ARPA  Vlan1"</span>,
        <span class="hljs-string">"Internet  192.168.1.126       5  f894.c220.2177  ARPA  Vlan1"</span>,
        <span class="hljs-string">"Internet  192.168.1.133       1  88c2.55fb.9ce7  ARPA  Vlan1"</span>,
        <span class="hljs-string">"Internet  192.168.1.138       0  a860.b60a.7a3a  ARPA  Vlan1"</span>
    ]
}

PLAY RECAP ***************************************************************
test_sw                    : ok=<span class="hljs-number">2</span>    changed=<span class="hljs-number">0</span>    unreachable=<span class="hljs-number">0</span>    failed=<span class="hljs-number">0</span></code></span></pre>


<p class="wp-block-paragraph">The <code>PLAY RECAP</code> line confirms two tasks completed successfully with no changes and no failures — exactly what you want from a read-only operation.</p>



<h2 class="wp-block-heading">Scaling Up: Running Across Many Devices</h2>



<p class="wp-block-paragraph">The real value of Ansible is not running a single command on one switch — it is running a set of tasks across dozens or hundreds of devices with a single command. Once your inventory is populated, the same playbook targets every matching host automatically.</p>



<p class="wp-block-paragraph">Practical use cases that are well suited to this pattern include:</p>



<ul class="wp-block-list">
<li><strong>Compliance auditing.</strong> Verify that device configurations match a known-good template — for example, that QoS policies or MPLS route targets are consistent across the fleet.</li>
<li><strong>Inventory and documentation.</strong> Collect <code>show version</code> output from every device and store it to disk. You immediately have a searchable record of firmware versions, model numbers, and serial numbers.</li>
<li><strong>MAC and IP address tracking.</strong> Save <code>show arp</code> and <code>show mac address-table dynamic</code> output, then use <code>grep</code> to locate any device on the network by its IP or MAC address across hundreds of output files.</li>
<li><strong>Configuration generation and deployment.</strong> Combine Ansible with the Jinja2 templating language to dynamically render device configurations and push them across the network.</li>
</ul>



<h2 class="wp-block-heading">Beyond the Basics</h2>



<p class="wp-block-paragraph">The example above covers a small fraction of what Ansible can do for network teams:</p>



<ul class="wp-block-list">
<li><strong>Ad hoc mode.</strong> Run a single module against an inventory group without writing a playbook — useful for quick checks during troubleshooting.</li>
<li><strong>Ansible Vault.</strong> Encrypt sensitive files such as credential variables so that secrets are never stored in plain text.</li>
<li><strong>Filters and plugins.</strong> Parse structured output, transform data, and extend Ansible&#8217;s capabilities beyond its built-in modules.</li>
<li><strong>Jinja2 templating.</strong> Generate device-specific configuration files from a single template, replacing manual copy-paste workflows.</li>
<li><strong>Roles.</strong> Package related tasks, variables, and templates into a reusable unit that can be shared across projects or published to Ansible Galaxy.</li>
</ul>



<p class="wp-block-paragraph">Nick Russo&#8217;s tutorial, <em>Automating Networks with Ansible the Right Way</em>, is frequently cited as a useful resource for engineers who want to move beyond basic playbooks into areas such as maintaining MPLS configurations with Ansible.</p>



<h2 class="wp-block-heading">Getting Started: Recommended Approach</h2>



<ol class="wp-block-list">
<li>Install Ansible on a Linux control node (or WSL on Windows).</li>
<li>Build the directory structure shown above with a single test device in your inventory.</li>
<li>Start with the read-only ARP collection playbook and confirm it works.</li>
<li>Expand to additional <code>show</code> commands and save results to files using the <code>copy</code> or <code>template</code> modules.</li>
<li>Once comfortable, explore write operations — start with non-production devices and always test with <code>--check</code> mode where supported.</li>
</ol>



<p class="wp-block-paragraph">Ansible&#8217;s official <em>Ansible for Network Automation</em> documentation section is the authoritative starting point. It links to a getting-started guide, an advanced topics guide, and a full list of network modules organised by vendor and platform.</p>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">Ansible is a practical choice for network automation: it is agentless, uses SSH, and its YAML-based playbooks are no harder to learn than many networking concepts you already know. Starting with simple read-only tasks — collecting ARP tables, documenting firmware versions, auditing configurations — gives you immediate value with minimal risk. As your confidence grows, the same tool scales to configuration deployment, compliance enforcement, and full network lifecycle management.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/an-introduction-to-network-automation-with-ansible/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GitLab vs. GitHub: When Should You Choose GitLab?</title>
		<link>https://www.bestdevops.com/when-to-choose-gitlab-instead-of-github/</link>
					<comments>https://www.bestdevops.com/when-to-choose-gitlab-instead-of-github/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 05:54:51 +0000</pubDate>
				<category><![CDATA[GitHub]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[network automation]]></category>
		<category><![CDATA[Open-Source Projects]]></category>
		<category><![CDATA[Software Testing]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=8876</guid>

					<description><![CDATA[GitHub and GitLab both build on Git, but they serve different workflows. This guide breaks down the key differences to help DevOps teams decide which platform fits their needs.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Git is a distributed version control system that tracks source code changes across the full history of a project. Unlike centralized client-server systems, every Git repository is self-contained—it stores the complete history locally and does not require constant network access to a central server.</p>



<p class="wp-block-paragraph">Two of the most widely used platforms built on top of Git are <strong>GitHub</strong> and <strong>GitLab</strong>. Both host repositories, manage pull/merge requests, and support team collaboration. However, they differ significantly in their approach to the broader software delivery lifecycle—particularly around CI/CD, deployment, and self-hosting. This article explains those differences so you can make an informed choice for your team.</p>



<h2 class="wp-block-heading">GitHub: The Social Coding Platform</h2>



<p class="wp-block-paragraph">GitHub was launched in 2008, co-founded by Tom Preston-Werner, PJ Hyett, and Chris Wanstrath. It is a Git-based repository hosting service that has grown into one of the largest communities for open-source software in the world.</p>



<p class="wp-block-paragraph">Key characteristics of GitHub include:</p>



<ul class="wp-block-list">
<li><strong>Open-source community hub:</strong> Public repositories are free, making GitHub the default home for most open-source projects. Discoverability, forking, and community contributions are first-class features.</li>
<li><strong>GitHub Actions (CI/CD):</strong> GitHub&#8217;s built-in automation platform lets you define workflows in YAML to build, test, and deploy code. It became generally available in 2019 and has expanded significantly since.</li>
<li><strong>Access control and project management:</strong> GitHub provides issue tracking, project boards, milestones, and wikis alongside repository hosting.</li>
<li><strong>Large marketplace:</strong> A rich ecosystem of third-party Actions and integrations covers most CI/CD, security, and deployment scenarios.</li>
<li><strong>Microsoft ownership:</strong> Microsoft acquired GitHub in 2018, which has accelerated enterprise integration (Azure DevOps, VS Code, Copilot).</li>
</ul>



<p class="wp-block-paragraph">GitHub does not natively bundle deployment orchestration or application monitoring tools. Teams that need automated deployments typically integrate external services such as AWS CodeDeploy, Heroku, or Kubernetes operators via Actions workflows.</p>



<h2 class="wp-block-heading">GitLab: The Integrated DevOps Platform</h2>



<p class="wp-block-paragraph">GitLab is also a Git-based repository manager, but its design philosophy is different: it aims to be a single application covering the <em>entire</em> DevOps lifecycle—from planning and source control through CI/CD, security scanning, deployment, and monitoring.</p>



<p class="wp-block-paragraph">Key characteristics of GitLab include:</p>



<ul class="wp-block-list">
<li><strong>Built-in CI/CD with GitLab Pipelines:</strong> GitLab CI/CD is deeply integrated and has been a core feature since 2012—predating GitHub Actions. Pipelines are defined in a <code>.gitlab-ci.yml</code> file at the repository root.</li>
<li><strong>Self-managed option:</strong> GitLab can be installed on your own infrastructure (Community Edition is open-source; Enterprise Edition is commercial). This is a critical differentiator for organisations with strict data-residency or air-gapped requirements.</li>
<li><strong>Kubernetes integration:</strong> GitLab provides native integration with Kubernetes clusters, enabling automated container deployment, scaling, and environment management directly from the platform.</li>
<li><strong>Security and compliance tooling:</strong> GitLab&#8217;s higher-tier plans include SAST, DAST, container scanning, dependency scanning, and license compliance—all surfaced inside merge request pipelines.</li>
<li><strong>Innersourcing support:</strong> GitLab supports internal visibility levels that let teams share repositories across an organisation without making them fully public—useful for enterprise innersourcing strategies.</li>
<li><strong>Application performance monitoring:</strong> GitLab integrates with monitoring tools to surface performance data alongside deployment activity.</li>
</ul>



<h2 class="wp-block-heading">Side-by-Side Feature Comparison</h2>



<p class="wp-block-paragraph">The table below summarises the most practically relevant differences for DevOps teams.</p>



<figure class="wp-block-table"><table><thead><tr><th>Feature</th><th>GitHub</th><th>GitLab</th></tr></thead><tbody><tr><td>Repository hosting</td><td>✅</td><td>✅</td></tr><tr><td>Built-in CI/CD</td><td>✅ GitHub Actions</td><td>✅ GitLab Pipelines</td></tr><tr><td>Self-managed / on-premises</td><td>✅ GitHub Enterprise Server</td><td>✅ Community &amp; Enterprise editions</td></tr><tr><td>Shared CI runners (free tier)</td><td>✅ (limited minutes)</td><td>✅ (limited minutes)</td></tr><tr><td>Self-hosted runners</td><td>✅ Self-hosted runners</td><td>✅ GitLab Runners</td></tr><tr><td>Native Kubernetes deployment</td><td>Via Actions / third-party</td><td>✅ Native integration</td></tr><tr><td>Built-in SAST / DAST</td><td>Via Actions / third-party</td><td>✅ (paid tiers)</td></tr><tr><td>Innersourcing visibility level</td><td>❌</td><td>✅ Internal visibility</td></tr><tr><td>Time tracking</td><td>❌ native</td><td>✅</td></tr><tr><td>Cycle analytics</td><td>❌ native</td><td>✅</td></tr><tr><td>Open-source community reach</td><td>Very large</td><td>Moderate</td></tr><tr><td>Marketplace / integrations</td><td>Very large (Actions Marketplace)</td><td>Moderate</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">CI/CD: A Closer Look</h2>



<p class="wp-block-paragraph">CI/CD is often the deciding factor in the GitLab vs. GitHub decision.</p>



<h3 class="wp-block-heading">GitLab Pipelines</h3>



<p class="wp-block-paragraph">GitLab&#8217;s pipeline system is mature and feature-rich. A minimal <code>.gitlab-ci.yml</code> looks like this:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">stages:
  - build
  - test
  - deploy

build-job:
  stage: build
  script:
    - <span class="hljs-keyword">echo</span> <span class="hljs-string">"Compiling the application..."</span>

test-job:
  stage: test
  script:
    - <span class="hljs-keyword">echo</span> <span class="hljs-string">"Running unit tests..."</span>

deploy-job:
  stage: deploy
  script:
    - <span class="hljs-keyword">echo</span> <span class="hljs-string">"Deploying to production..."</span>
  environment:
    name: production</code></span></pre>


<p class="wp-block-paragraph">GitLab provides shared runners on its SaaS offering, and teams can register self-hosted runners with a single command—giving them full control over the build environment and no per-minute billing surprises.</p>



<h3 class="wp-block-heading">GitHub Actions</h3>



<p class="wp-block-paragraph">GitHub Actions uses a workflow YAML stored under <code>.github/workflows/</code>. The Actions Marketplace offers thousands of pre-built steps for almost any task. An equivalent minimal workflow:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">name: CI

on: &#91;push]

jobs:
  build-test-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: <span class="hljs-keyword">echo</span> <span class="hljs-string">"Compiling the application..."</span>
      - name: Test
        run: <span class="hljs-keyword">echo</span> <span class="hljs-string">"Running unit tests..."</span>
      - name: Deploy
        run: <span class="hljs-keyword">echo</span> <span class="hljs-string">"Deploying to production..."</span></code></span></pre>


<p class="wp-block-paragraph">GitHub Actions is tightly integrated with the GitHub ecosystem and benefits from Microsoft&#8217;s investment in tooling, including integration with Azure and GitHub Copilot.</p>



<h2 class="wp-block-heading">When to Choose GitLab</h2>



<p class="wp-block-paragraph">GitLab tends to be the better choice when one or more of the following apply:</p>



<ul class="wp-block-list">
<li><strong>You need to self-host:</strong> Compliance requirements, air-gapped networks, or data-sovereignty rules make on-premises hosting mandatory. GitLab&#8217;s Community Edition is free and open-source.</li>
<li><strong>You want an all-in-one DevOps platform:</strong> If your team wants planning, SCM, CI/CD, security scanning, and deployment observability under one roof without stitching together many third-party tools, GitLab&#8217;s integrated approach reduces operational overhead.</li>
<li><strong>Kubernetes-native deployments matter:</strong> GitLab&#8217;s native Kubernetes integration simplifies environment management and progressive delivery without requiring additional tooling.</li>
<li><strong>Innersourcing at enterprise scale:</strong> The internal repository visibility level makes it straightforward to share code across business units without opening it to the public.</li>
<li><strong>Built-in security scanning is a priority:</strong> GitLab&#8217;s higher-tier plans include SAST, DAST, and dependency scanning directly in the merge request pipeline, which can simplify compliance workflows.</li>
<li><strong>Mature CI/CD with self-hosted runners:</strong> GitLab Runner is lightweight, easy to configure, and supports Docker, Kubernetes, shell, and other executors out of the box.</li>
</ul>



<h2 class="wp-block-heading">When to Choose GitHub</h2>



<p class="wp-block-paragraph">GitHub tends to be the better choice when:</p>



<ul class="wp-block-list">
<li><strong>Open-source visibility and community are important:</strong> GitHub is where the vast majority of open-source projects live. Discoverability, contributor onboarding, and community interaction are stronger here.</li>
<li><strong>Your team is already in the Microsoft / Azure ecosystem:</strong> Integration with Azure services, Visual Studio, and GitHub Copilot is seamless.</li>
<li><strong>You rely on a wide third-party integration marketplace:</strong> The Actions Marketplace and the breadth of existing integrations often means less custom scripting.</li>
<li><strong>Social coding and developer experience are top priorities:</strong> GitHub&#8217;s interface, pull request workflow, and Discussions feature are widely regarded as polished and developer-friendly.</li>
</ul>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">Neither platform is universally superior. GitHub excels as a social coding and open-source collaboration hub with a rich integration ecosystem. GitLab excels as an integrated, self-hostable DevOps platform that covers more of the software delivery lifecycle out of the box.</p>



<p class="wp-block-paragraph">The practical decision usually comes down to three questions:</p>



<ol class="wp-block-list">
<li><strong>Do you need to self-host?</strong> → GitLab Community Edition.</li>
<li><strong>Is open-source community reach important?</strong> → GitHub.</li>
<li><strong>Do you want a single platform for CI/CD, security, and deployment without heavy third-party integration?</strong> → GitLab.</li>
</ol>



<p class="wp-block-paragraph">Evaluate your team&#8217;s workflow, compliance requirements, and long-term DevOps maturity goals before committing to either platform. Both offer free tiers and trials that make hands-on evaluation practical before any purchase decision.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/when-to-choose-gitlab-instead-of-github/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>BlackBerry Cybersecurity Solutions Now Available on Microsoft Azure Marketplace</title>
		<link>https://www.bestdevops.com/blackberry-solutions-available-on-microsoft-azure-marketplace/</link>
					<comments>https://www.bestdevops.com/blackberry-solutions-available-on-microsoft-azure-marketplace/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 03 Oct 2019 04:47:15 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[network automation]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=8266</guid>

					<description><![CDATA[BlackBerry has listed four of its enterprise cybersecurity and endpoint management solutions on the Microsoft Azure Marketplace, giving Azure customers streamlined access to UEM, AtHoc, Workspaces, and Spark Communications Services.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Originally reported by cso.com.au. This article is based on the official BlackBerry press announcement dated October 2019.</em></p>



<h2 class="wp-block-heading">BlackBerry Brings Enterprise Security Portfolio to Azure Marketplace</h2>



<p class="wp-block-paragraph">BlackBerry Limited (NYSE: BB; TSX: BB) announced that a set of its enterprise cybersecurity and endpoint management solutions are now purchasable and deployable directly through the <a href="https://azuremarketplace.microsoft.com/" rel="noopener">Microsoft Azure Marketplace</a>. The move gives existing Azure customers a faster path to evaluating, procuring, and deploying BlackBerry software within an environment they already manage and trust.</p>



<p class="wp-block-paragraph">The listing covers four distinct products spanning crisis communications, unified endpoint management, secure content collaboration, and embedded secure messaging. Each solution is certified to run on Azure, meaning organizations can consolidate procurement and billing within their existing Azure agreements.</p>



<h2 class="wp-block-heading">Why This Matters for DevOps and Security Teams</h2>



<p class="wp-block-paragraph">For DevOps and IT operations teams already running workloads on Azure, marketplace availability removes several friction points:</p>



<ul class="wp-block-list">
<li><strong>Consolidated billing:</strong> Azure Marketplace purchases can be rolled into existing Azure spend commitments and invoices.</li>
<li><strong>Pre-validated deployments:</strong> Solutions listed on the Azure Marketplace are tested and certified to run on the Azure platform, reducing integration risk.</li>
<li><strong>Faster provisioning:</strong> Teams can deploy directly from the marketplace rather than negotiating separate vendor contracts or configuring manual integrations.</li>
<li><strong>Zero-trust alignment:</strong> BlackBerry&#8217;s portfolio is positioned around zero-trust security principles, which map directly to modern enterprise security postures for hybrid and multi-cloud environments.</li>
</ul>



<h2 class="wp-block-heading">The Four BlackBerry Solutions on Azure Marketplace</h2>



<h3 class="wp-block-heading">BlackBerry AtHoc</h3>



<p class="wp-block-paragraph">A crisis communications platform designed to improve organizational coordination during emergencies. AtHoc enables targeted, multi-channel alerting across personnel groups, making it particularly relevant for government agencies, healthcare organizations, and large enterprises with distributed workforces.</p>



<h3 class="wp-block-heading">BlackBerry UEM (Unified Endpoint Management)</h3>



<p class="wp-block-paragraph">BlackBerry UEM provides centralized policy control across an organization&#8217;s entire device and application fleet, including mobile phones, laptops, tablets, and IoT endpoints. For DevOps teams managing device fleets alongside cloud infrastructure, UEM offers a single control plane to enforce security policies without fragmenting tooling.</p>



<h3 class="wp-block-heading">BlackBerry Workspaces</h3>



<p class="wp-block-paragraph">A secure content collaboration platform that applies file-level digital rights management (DRM) to protect sensitive documents and intellectual property. Unlike perimeter-based controls, file-level DRM keeps protections attached to the document itself regardless of where it travels, which is relevant for teams sharing data across organizational boundaries.</p>



<h3 class="wp-block-heading">BlackBerry Spark Communications Services</h3>



<p class="wp-block-paragraph">A Communications Platform as a Service (CPaaS) offering that lets developers embed end-to-end encrypted messaging, voice, and collaboration capabilities directly into enterprise applications and smart devices. This is notable for teams building IoT-connected products or internal tooling that requires secure, auditable communication channels without building cryptographic infrastructure from scratch.</p>



<h2 class="wp-block-heading">Partnership Context: BlackBerry as a Microsoft Gold Partner</h2>



<p class="wp-block-paragraph">BlackBerry holds Gold Partner status within the Microsoft Azure Partner Network, which reflects a validated level of technical competency and commitment to the Azure ecosystem. Richard McLeod, Global Vice President of Enterprise Software Channels at BlackBerry, framed the marketplace listing as part of a broader distribution strategy:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;We want to ensure that BlackBerry&#8217;s trusted solutions are available to customers wherever they choose to seek out our products. As a Gold Partner within the Microsoft Azure Partner Network, we are pleased to offer some of those solutions—key to navigating today&#8217;s zero trust environment—on the Microsoft Azure Marketplace.&#8221;</p><cite>— Richard McLeod, Global Vice President, Enterprise Software Channels, BlackBerry</cite></blockquote>



<p class="wp-block-paragraph">Sajan Parihar, Senior Director of Microsoft Azure Platform at Microsoft, confirmed the certification process behind the listing:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Through Microsoft Azure Marketplace, customers around the world can easily find, buy, and deploy partner solutions they can trust, all certified and optimized to run on Azure. We&#8217;re happy to welcome BlackBerry&#8217;s cybersecurity solutions to the growing Azure Marketplace ecosystem.&#8221;</p><cite>— Sajan Parihar, Senior Director, Microsoft Azure Platform, Microsoft Corp.</cite></blockquote>



<h2 class="wp-block-heading">About the Microsoft Azure Marketplace</h2>



<p class="wp-block-paragraph">The Azure Marketplace is Microsoft&#8217;s online storefront for cloud solutions that are certified and optimized to run on Azure. It serves as a distribution channel connecting enterprises looking for ready-to-deploy software with independent software vendors (ISVs) and managed service providers. Solutions available through the marketplace span infrastructure, security, analytics, developer tools, and industry-specific applications.</p>



<h2 class="wp-block-heading">About BlackBerry</h2>



<p class="wp-block-paragraph">BlackBerry (NYSE: BB; TSX: BB) is a security software and services company headquartered in Waterloo, Ontario, Canada. The company focuses on enterprise and government markets, with product lines covering endpoint security and management, encryption, embedded systems, and AI-assisted threat detection. BlackBerry has repositioned itself over the past decade from a hardware manufacturer to a software-centric cybersecurity vendor. More information is available at <a href="https://www.blackberry.com" rel="noopener">blackberry.com</a>.</p>



<p class="wp-block-paragraph"><em>Trademarks, including but not limited to BLACKBERRY and EMBLEM Design, are the trademarks or registered trademarks of BlackBerry Limited. All other trademarks are the property of their respective owners.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/blackberry-solutions-available-on-microsoft-azure-marketplace/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How DevOps Training and Certification Benefits the Team</title>
		<link>https://www.bestdevops.com/how-devops-training-and-certification-benefits-the-team/</link>
					<comments>https://www.bestdevops.com/how-devops-training-and-certification-benefits-the-team/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 09 Jul 2019 05:48:07 +0000</pubDate>
				<category><![CDATA[DevOps News]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IT teams]]></category>
		<category><![CDATA[network automation]]></category>
		<category><![CDATA[Training and Certification]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=6038</guid>

					<description><![CDATA[Organisations like Cisco and CompTIA are overhauling their certification programmes to emphasise real-world skills. Here is what that shift means for building effective DevOps teams.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article draws on reporting originally published at <a href="https://devops.com" rel="noopener">devops.com</a> and covers announcements from Cisco Systems and CompTIA regarding updates to their training and certification programmes.</em></p>



<h2 class="wp-block-heading">The Push for Real-World Relevance in Certification</h2>



<p class="wp-block-paragraph">For years, technology certifications were criticised for testing rote memorisation rather than practical competence. Two major industry players—Cisco Systems and CompTIA—have independently moved to change that, redesigning their programmes around performance-based testing and real-world scenarios. For hiring managers and team leads building DevOps practices, this shift matters: certifications are increasingly becoming a more reliable signal of on-the-job capability.</p>



<h2 class="wp-block-heading">Cisco&#8217;s DevNet Certifications: Bridging Networking and Software Development</h2>



<p class="wp-block-paragraph">Cisco announced a significant restructuring of its training and certification portfolio, introducing a dedicated <strong>DevNet Certification</strong> track. The goal is to validate an individual&#8217;s ability to apply software skills to modern network technologies—a combination that has historically been scarce in the industry.</p>



<p class="wp-block-paragraph">Susie Wee, then Senior Vice President and CTO of DevNet at Cisco, framed the rationale clearly:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Advances in network technologies have enabled new applications and business models—converged IP networks enabled voice over IP, 3G networks enabled mobile applications and 4G networks enabled mobile video. DevOps has become a key factor for bringing those new networked applications to life. Training and certifications for network professionals and software developers have become a must.&#8221;</p><cite>Susie Wee, SVP &amp; CTO of DevNet, Cisco Systems</cite></blockquote>



<p class="wp-block-paragraph">The DevNet Certifications are structured to help network engineers learn software development practices, and to help application developers understand how to exploit network capabilities fully. According to Wee, this is essential because the only way to leverage modern network infrastructure effectively is to build DevOps teams that possess both networking and software skills—skills needed to navigate both software-defined networking (SDN) and traditional physical network solutions.</p>



<h2 class="wp-block-heading">CompTIA&#8217;s Approach: Performance-Based Testing and Certification Pathways</h2>



<p class="wp-block-paragraph">CompTIA undertook a parallel revamp of its certification programmes. A notable example is the <strong>CompTIA Linux+</strong> certification, which was redesigned to validate competencies expected of early-career IT professionals who support Linux environments.</p>



<p class="wp-block-paragraph">James Stanger, CompTIA&#8217;s Chief Technology Evangelist, described the philosophy behind the change:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;For certifications to have real value today, people must immerse themselves in the technology. The new Linux+ certification uses performance-based testing that presents candidates with real-world scenarios, meaning that achieving certification demonstrates the ability to function in the real world.&#8221;</p><cite>James Stanger, Chief Technology Evangelist, CompTIA</cite></blockquote>



<p class="wp-block-paragraph">Stanger also outlined the broader skill set that DevOps team members need, going beyond a single specialisation:</p>



<ul class="wp-block-list">
<li><strong>Project management methodologies</strong> — both Agile and Waterfall</li>
<li><strong>Operating system proficiency</strong> — deep familiarity with both Windows and Linux environments</li>
<li><strong>Database knowledge</strong> — covering relational databases and object-oriented databases</li>
<li><strong>Breadth with depth</strong> — the ability to specialise in one area while maintaining enough cross-functional understanding to collaborate effectively</li>
</ul>



<p class="wp-block-paragraph">CompTIA&#8217;s certification pathways are designed with team-building in mind, allowing organisations to map individual certifications to the collective skill requirements of a DevOps team rather than treating each certificate in isolation.</p>



<h2 class="wp-block-heading">Cisco DevNet: Building a Community Around Network Automation</h2>



<p class="wp-block-paragraph">Beyond certifications, Cisco has invested in <strong>DevNet</strong>, a developer community and resource hub created to help network engineers and application developers adapt to rapidly changing network technologies. One of its flagship initiatives is the <strong>DevNet Automation Exchange</strong>—a community-based developer centre focused on network automation.</p>



<p class="wp-block-paragraph">Cisco describes the Automation Exchange as helping practitioners progress through three stages of network automation maturity:</p>



<h3 class="wp-block-heading">Walk: Visibility and Read-Only Insights</h3>



<p class="wp-block-paragraph">At the foundational level, teams gain visibility into their network infrastructure in a read-only capacity. Practical use cases include gathering telemetry data from running networks and conducting audits to verify ongoing security posture—valuable starting points for teams new to automation.</p>



<h3 class="wp-block-heading">Run: Policy Activation Across Network Domains</h3>



<p class="wp-block-paragraph">At the intermediate level, teams can activate policy and intent across different network domains. This supports use cases such as self-service network operations that enforce security policies and comply with operational guidelines—reducing manual toil without requiring full automation maturity.</p>



<h3 class="wp-block-heading">Fly: Full DevOps Workflow Integration</h3>



<p class="wp-block-paragraph">At the advanced level, teams proactively manage applications, users and devices using DevOps workflows. Key use cases include deploying applications through <strong>CI/CD pipelines</strong> while automatically configuring the network to conform to new application policies—representing true infrastructure-as-code practice at the network layer.</p>



<p class="wp-block-paragraph">The Automation Exchange was seeded with more than 50 code repositories, many contributed by Cisco&#8217;s own engineering teams and systems engineers. Cisco has since opened the platform for community contributions, inviting DevNet members to submit code that addresses their specific use cases.</p>



<h2 class="wp-block-heading">What This Means for DevOps Team Building</h2>



<p class="wp-block-paragraph">The moves by Cisco and CompTIA signal a broader industry maturation in how technical skills are validated. For DevOps practitioners and engineering managers, there are several practical takeaways:</p>



<ul class="wp-block-list">
<li><strong>Certifications are becoming more meaningful.</strong> Performance-based testing and scenario-driven assessments make it easier to use certifications as a reliable hiring and skills-gap signal.</li>
<li><strong>Networking and software skills are converging.</strong> Teams that lack network automation skills are increasingly at a disadvantage as infrastructure becomes more programmable.</li>
<li><strong>Pathways matter as much as individual certifications.</strong> Mapping certification tracks to team roles—rather than requiring every team member to hold the same credential—allows for more efficient skills development.</li>
<li><strong>Community resources supplement formal training.</strong> Platforms like DevNet Automation Exchange provide hands-on code examples that bridge the gap between classroom learning and production implementation.</li>
</ul>



<p class="wp-block-paragraph">As organisations continue to automate infrastructure and adopt CI/CD practices, the demand for professionals who hold both deep and broad technical skills will only grow. Updated certification programmes that prioritise real-world competency are a step in the right direction for the industry.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-devops-training-and-certification-benefits-the-team/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How DevOps Principles Are Being Applied to Networking</title>
		<link>https://www.bestdevops.com/how-devops-principles-are-being-applied-to-networking/</link>
					<comments>https://www.bestdevops.com/how-devops-principles-are-being-applied-to-networking/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 23 Jan 2018 05:10:51 +0000</pubDate>
				<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[(CI/CD)]]></category>
		<category><![CDATA[network automation]]></category>
		<category><![CDATA[Networking]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=3202</guid>

					<description><![CDATA[DevOps practices such as infrastructure-as-code, CI/CD pipelines, chaos engineering, and automated monitoring are reshaping how network engineers provision, configure, and operate network infrastructure.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on coverage originally published on <strong>infoq.com</strong>. The discussion below expands on the core concepts for a DevOps engineering audience.</em></p>



<h2 class="wp-block-heading">The Convergence of DevOps and Networking</h2>



<p class="wp-block-paragraph">For years, networking was treated as a discipline apart from software development and systems operations. Network changes were manual, infrequent, and governed by change-management processes that stood in sharp contrast to the rapid iteration cycles championed by DevOps teams. That gap is closing. Practices from the DevOps world — automation, version control, continuous delivery, and observability — are being systematically adopted into the management of networking services, driven by better tooling, more programmable hardware, and the rise of software-defined networking.</p>



<h2 class="wp-block-heading">Key DevOps Practices Being Adopted in Networking</h2>



<p class="wp-block-paragraph">Several DevOps disciplines translate directly into networking contexts:</p>



<ul class="wp-block-list">
  <li><strong>Networks-as-Code</strong> — Declaring desired network topology and behavior in version-controlled configuration files, then applying that state programmatically to physical or virtual devices.</li>
  <li><strong>CI/CD Pipeline Integration</strong> — Treating network configuration changes as deployable artifacts, validated and promoted through automated pipelines before reaching production.</li>
  <li><strong>Container-scale Network Functions</strong> — Decomposing network services into smaller, independently deployable units that can run in containers rather than on dedicated appliances.</li>
  <li><strong>Chaos Engineering for Networks</strong> — Deliberately injecting network faults to validate resilience and expose hidden dependencies before they cause unplanned outages.</li>
  <li><strong>Unified Monitoring and Observability</strong> — Extending the same monitoring stacks used for applications and infrastructure to cover network-specific metrics and events.</li>
</ul>



<h2 class="wp-block-heading">Networks-as-Code: Declaring Intent, Not Commands</h2>



<p class="wp-block-paragraph">The infrastructure-as-code (IaC) pattern — where the desired state of infrastructure is expressed in declarative files and enforced by automation tools — maps naturally to networking. With networks-as-code, engineers describe how a network should look and behave: which VLANs exist, how routing tables should be configured, what firewall rules apply. An automation tool then reconciles the live network against that declared state.</p>



<p class="wp-block-paragraph">Historically, network device configuration has been standardized through protocols such as <strong>NETCONF</strong> (Network Configuration Protocol, RFC 6241), but adoption in automation toolchains was slow. That changed as mainstream DevOps tools added native networking support:</p>



<ul class="wp-block-list">
  <li><strong>Ansible</strong> introduced dedicated modules for networking device automation, covering hardware from multiple vendors including Cisco, Juniper, Arista, and others. These modules allow network configuration tasks to be expressed as Ansible playbooks alongside server and cloud automation.</li>
  <li><strong>SaltStack</strong> provides similar networking modules, enabling event-driven and scheduled configuration management of network devices.</li>
  <li><strong>NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support)</strong> is an open-source library that provides a vendor-neutral Python API for interacting with network devices. It integrates with both Ansible and Salt, allowing engineers to write automation that works across different vendors&#8217; hardware without rewriting logic per platform.</li>
</ul>



<h2 class="wp-block-heading">Virtual Network Functions and Containers as Experimentation Platforms</h2>



<p class="wp-block-paragraph">One barrier to adopting automation in networking has been the risk of experimenting directly on production hardware. <strong>Virtual Network Functions (VNFs)</strong> — network capabilities such as firewalls, load balancers, or routers running as software on virtual machines rather than on dedicated physical appliances — lower that barrier considerably. Teams can test automation workflows against virtual instances before applying them to production hardware.</p>



<p class="wp-block-paragraph">VNF adoption has been particularly pronounced in the telecommunications industry, where operators are under pressure to provision and reconfigure network services rapidly. Beyond virtual machines, some network functions are being containerized, enabling faster startup times and denser packing on commodity hardware. Not all network functions are well-suited to containerization — those with high throughput requirements or tight hardware integration may still require VMs or dedicated appliances — but the trend toward containerized network functions is growing.</p>



<h2 class="wp-block-heading">Software-Defined Networking as an Automation Enabler</h2>



<p class="wp-block-paragraph"><strong>Software-Defined Networking (SDN)</strong> separates the control plane (decisions about where traffic goes) from the data plane (the actual forwarding of packets). By exposing the control plane through APIs and programmable interfaces, SDN makes network devices far more amenable to scripted and automated configuration. As more networking services are delivered through SDN architectures, the surface area available for DevOps-style automation expands correspondingly.</p>



<h2 class="wp-block-heading">Chaos Engineering Applied to Network Reliability</h2>



<p class="wp-block-paragraph">Chaos engineering — the practice of deliberately introducing failures into a system to uncover weaknesses — is well established for application and infrastructure layers. Its application to networking is less mature. Network chaos experiments might include simulating link failures, injecting packet loss or latency, or partitioning network segments to observe how applications and failover mechanisms respond.</p>



<p class="wp-block-paragraph">At the time of the original reporting, chaos engineering in the networking domain was still in early stages. The principles are sound: if you do not proactively test how your network behaves under failure conditions, you will discover those behaviors during an incident instead.</p>



<h2 class="wp-block-heading">Monitoring and Observability for Networks</h2>



<p class="wp-block-paragraph">Networks are increasingly monitored using the same tooling that observes the rest of the stack — time-series databases, dashboards, alerting systems, and distributed tracing platforms. Some of these tools include network-specific extensions or integrations, such as SNMP polling, flow data collection (NetFlow, sFlow, IPFIX), and BGP/routing state monitoring. Unifying network observability with application and infrastructure observability gives teams a single plane of glass for diagnosing cross-layer issues, rather than requiring separate NOC and operations workflows.</p>



<h2 class="wp-block-heading">The Human Factor</h2>



<p class="wp-block-paragraph">Automation does not eliminate the human element in network reliability — it changes it. Studies on network reliability have identified human error as a leading cause of outages, which motivates investment in automation to reduce manual, error-prone steps. At the same time, effective automation requires skilled engineers who understand both the networking domain and the software engineering practices needed to build and maintain reliable automation pipelines. Bridging this skill gap is one of the central challenges in the NetDevOps or Network Reliability Engineering space.</p>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">The application of DevOps principles to networking is not a distant aspiration — it is actively happening, driven by programmable hardware, open-source tooling like Ansible, SaltStack, and NAPALM, and architectural shifts toward SDN and VNFs. Teams looking to move in this direction can start by treating network configuration as code, integrating network change validation into CI/CD pipelines, and extending existing monitoring practices to cover the network layer.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-devops-principles-are-being-applied-to-networking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DevOps Shops Weather Growing Pains with Infrastructure-as-Code Tools</title>
		<link>https://www.bestdevops.com/devops-shops-weather-growing-pains-with-infrastructure-as-code-tools/</link>
					<comments>https://www.bestdevops.com/devops-shops-weather-growing-pains-with-infrastructure-as-code-tools/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 30 Jun 2017 08:36:57 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[clod computing]]></category>
		<category><![CDATA[CloudFormation]]></category>
		<category><![CDATA[code tools]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[network automation]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1987</guid>

					<description><![CDATA[Chef, Puppet, Ansible, CloudFormation, and Terraform are all evolving fast — and so are the headaches that come with adopting them. Here's what DevOps teams were dealing with as IaC tooling matured.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on reporting originally published at searchitoperations.techtarget.com (2017). Tool versions and feature sets referenced reflect the state of the ecosystem at that time.</em></p>



<h2 class="wp-block-heading">The Infrastructure-as-Code Landscape Was Evolving Fast</h2>



<p class="wp-block-paragraph">By mid-2017, IT operations teams were leaning heavily on infrastructure-as-code (IaC) tools to keep pace with the demands of DevOps. But the tools themselves were advancing almost as quickly as the applications they were meant to support — bringing both capability improvements and painful breaking changes.</p>



<p class="wp-block-paragraph">Established players Chef and Puppet had recently restructured their products to support containers and the underlying infrastructure changes that came with them. Chef refactored its codebase into three major open-source projects and introduced Habitat, which many users were still trying to understand. Puppet published a roadmap for improved container support and was working toward a container management API. AWS CloudFormation, released in 2011, had been receiving roughly monthly feature updates in the preceding year.</p>



<p class="wp-block-paragraph">Among newer entrants, Ansible — launched around 2012 and acquired by Red Hat in 2015 — had added network automation integrations and Red Hat CloudForms support for multicloud environments. HashiCorp Terraform, first released in 2014, had gained momentum quickly but had not yet reached a stable 1.0 release, leaving users to absorb breaking changes with each pre-1.0 update.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;It&#8217;s a rapidly evolving area, and a lot of companies are just getting into this space. Most of the people working with these tools are sys admins who are trying to figure out how to scale, rather than developers.&#8221;</p><cite>Brandon Cipes, Managing Director of DevOps, cPrime</cite></blockquote>



<h2 class="wp-block-heading">Most Teams Mix and Match IaC Tools</h2>



<p class="wp-block-paragraph">Few organizations relied on a single IaC tool. Most combined two or more, which added its own layer of complexity. A common pattern was to start with AWS CloudFormation — a natural first choice for companies building on AWS — and then layer in additional tools as infrastructure needs grew more complex or extended to other cloud providers.</p>



<p class="wp-block-paragraph">CloudFormation&#8217;s verbosity and configuration demands were a recurring complaint. Its JSON (and later YAML) templates require precise parameter configuration, and a misconfigured template will often fail entirely rather than partially recover.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;It&#8217;s just not the most friendly tool in the world. It doesn&#8217;t use an easy-to-read language, it requires a lot of parameters to be set, and all of those parameters and details have to be very particularly configured or it will break.&#8221;</p><cite>Brandon Cipes, cPrime</cite></blockquote>



<p class="wp-block-paragraph">Despite its friction, CloudFormation couldn&#8217;t simply be abandoned. Its ubiquity within the AWS ecosystem meant teams had to remain fluent in it to collaborate effectively with the broader AWS community.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;CloudFormation is the lingua franca to exchange ideas about infrastructure and AWS resources. We definitely need to know the technology to be able to exchange ideas with the rest of the community because of its ubiquity.&#8221;</p><cite>Joaquin Menchaca, DevOps Engineer, goBalto Inc.</cite></blockquote>



<h3 class="wp-block-heading">Ansible&#8217;s Appeal — and Its Gaps</h3>



<p class="wp-block-paragraph">Ansible&#8217;s YAML-based approach made it attractive to teams that wanted their infrastructure definitions to sit naturally alongside application code. Its agentless architecture and low barrier to entry made it popular with sysadmins transitioning into DevOps roles.</p>



<p class="wp-block-paragraph">However, some practitioners felt that Ansible&#8217;s investment in new areas — particularly network automation — was coming at the expense of progress elsewhere. Container support, for example, was seen as underdeveloped. Ansible Container, a project intended to give operators a familiar interface for container workflows, saw limited adoption in practice.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Their efforts with Docker have been disappointing, as they focus more on Ansible Container projects. It begs the question, &#8216;Why not just use shell?'&#8221;</p><cite>Joaquin Menchaca, goBalto Inc.</cite></blockquote>



<h2 class="wp-block-heading">Terraform: Easier to Use, Harder to Upgrade</h2>



<p class="wp-block-paragraph">HashiCorp Terraform had built a following among DevOps teams who found its HCL (HashiCorp Configuration Language) significantly more readable than CloudFormation&#8217;s verbose JSON templates. Its cross-cloud provider model was another major draw: teams could manage AWS resources, Google Cloud infrastructure, monitoring services like Datadog, and more — all from a single, consistent configuration language.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Terraform is a general language for working across clouds and various resources so that we can work with things like Datadog alerts, AWS resources or potentially spin up parts of Google&#8217;s cloud infrastructure, all from one place with one uniform configuration language.&#8221;</p><cite>Calvin French-Owen, Co-founder, Segment</cite></blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;CloudFormation makes you want to poke your eyes out, whereas Terraform is much simpler to understand.&#8221;</p><cite>Calvin French-Owen, Segment</cite></blockquote>



<p class="wp-block-paragraph">The trade-off was instability in pre-1.0 releases. HashiCorp&#8217;s 0.9 release, for example, significantly changed how remote state was stored and managed — a change that was necessary for teams sharing infrastructure, but required substantial rework to adopt.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;We have to reimplement a few things on our side as far as our workflow and re-educate ourselves to move our state as it is now to the 0.9 version.&#8221;</p><cite>Dale Ragan, Senior Software Engineer, SAP Concur Technologies</cite></blockquote>



<p class="wp-block-paragraph">Teams using Terraform Enterprise also reported bugs in remote state management, leading some to prefer self-managed state stored in Amazon S3 rather than relying on the managed offering.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;In some cases, we&#8217;ve found it&#8217;s not quite a first-class citizen compared to when we were managing state ourselves and putting it on S3.&#8221;</p><cite>Calvin French-Owen, Segment</cite></blockquote>



<h2 class="wp-block-heading">The Stateful vs. Stateless Debate</h2>



<p class="wp-block-paragraph">Terraform&#8217;s use of state files to track real-world infrastructure was one of its defining characteristics — and one of its most polarizing. Tools like Ansible, Chef, and Puppet had traditionally taken a stateless, declarative approach: describe the desired state of the system and let the tool reconcile the difference. Terraform broke from this convention by maintaining a state file that records what infrastructure exists.</p>



<p class="wp-block-paragraph">Proponents argued that state tracking was genuinely useful: it let teams know exactly what resources existed, enabled remote state sharing across teams, and allowed infrastructure to be built incrementally on top of resources managed by others.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Knowing about the resources you have is important, and state gives you that. Also, remote state is tracked to allow teams to build on top of infrastructure they may not control.&#8221;</p><cite>Dale Ragan, SAP Concur Technologies</cite></blockquote>



<p class="wp-block-paragraph">Critics were more cautious. A corrupted or out-of-sync state file could lead to destructive outcomes — including accidental deletion of infrastructure with a single command.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Terraform is scary, because if the state is incorrect, you can destroy your entire organization&#8217;s infrastructure with a single command. Stateless has always been the preferred way to manage configuration, from CFEngine to Puppet, to Chef and to Ansible; Terraform broke away from this and tries to sell it as a feature.&#8221;</p><cite>Joaquin Menchaca, goBalto Inc.</cite></blockquote>



<p class="wp-block-paragraph">The mitigation, according to practitioners who had adopted Terraform at scale, was modularization. A well-structured, modular Terraform configuration limits the blast radius of any single operation — a monolithic configuration is far more vulnerable than one broken into composable, independently managed modules.</p>



<h2 class="wp-block-heading">Where Terraform Fits — and Where It Doesn&#8217;t</h2>



<p class="wp-block-paragraph">The consensus among practitioners at the time was that Terraform was not a wholesale replacement for Chef, Puppet, or Ansible — it occupied a different part of the stack. Terraform excelled at provisioning and managing cloud infrastructure: spinning up VPCs, compute instances, DNS records, load balancers, and similar resources. Configuration management tasks — installing packages, managing services, applying OS-level configuration — remained the domain of Chef, Puppet, and Ansible.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;You could call Terraform a subset of Chef, Puppet and Ansible. It&#8217;s a tool people like to get infrastructure up quickly, cloud-agnostically, without having to build out all the other stuff those other products necessitate.&#8221;</p><cite>Brandon Cipes, cPrime</cite></blockquote>



<p class="wp-block-paragraph">In practice, many teams used Terraform to provision infrastructure and then handed off to Ansible or Chef for configuration management — combining the strengths of each tool while accepting the overhead of maintaining expertise across multiple systems.</p>



<h2 class="wp-block-heading">Key Takeaways for IaC Practitioners</h2>



<ul class="wp-block-list"><li><strong>No single tool does everything.</strong> Most mature DevOps shops combine IaC tools, using each where it fits best. Plan for multi-tool complexity from the start.</li><li><strong>CloudFormation&#8217;s ubiquity matters.</strong> Even if your team prefers other tools, understanding CloudFormation remains important for communicating infrastructure intent within the AWS ecosystem.</li><li><strong>Ansible is approachable, but watch the gaps.</strong> Its YAML syntax integrates well with application code, but container support and specific integration areas may lag.</li><li><strong>Terraform&#8217;s pre-1.0 releases carry real risk.</strong> Breaking changes between minor releases require disciplined upgrade processes and thorough testing before applying to production state.</li><li><strong>Modularize Terraform configurations early.</strong> Monolithic configurations amplify the risk of state-related failures. Decompose infrastructure into small, independently managed modules.</li><li><strong>State management is a first-order concern.</strong> Whether you store Terraform state in S3, Terraform Cloud, or another backend, ensure it is versioned, locked, and backed up before operating at scale.</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/devops-shops-weather-growing-pains-with-infrastructure-as-code-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
