<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adan Patience</title>
    <description>The latest articles on DEV Community by Adan Patience (@__init__adan).</description>
    <link>https://dev.to/__init__adan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F214683%2F9c9b30f6-1af5-4ce3-b9f5-53d1c0847312.jpeg</url>
      <title>DEV Community: Adan Patience</title>
      <link>https://dev.to/__init__adan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__init__adan"/>
    <language>en</language>
    <item>
      <title>$ vagrant up</title>
      <dc:creator>Adan Patience</dc:creator>
      <pubDate>Fri, 04 Oct 2019 10:55:00 +0000</pubDate>
      <link>https://dev.to/__init__adan/vagrant-up-21k1</link>
      <guid>https://dev.to/__init__adan/vagrant-up-21k1</guid>
      <description>&lt;p&gt;Vagrant is a tool for building and managing virtual machine environments in a single workflow. Because Vagrant is geared so strongly toward automation, it lowers the time it takes to set up environments and as a result, improves production parity and consistency across all environments, making the "but it works on my local" an excuse of the past.&lt;/p&gt;

&lt;p&gt;As a DevOps Engineer, I've found an interest in Vagrant because it enabled our team to provision disposable environments in a consistent manner. As a result, this allowed us to quickly test our infrastructure scripts and POC tools such as Chef, Puppet and Ansible. For further reading, visit &lt;a href="https://www.vagrantup.com/intro/index.html" rel="noopener noreferrer"&gt;Vagrant&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;Installing Vagrant is extremely easy. Head over to the &lt;a href="https://www.vagrantup.com/downloads.html" rel="noopener noreferrer"&gt;Vagrant downloads page&lt;/a&gt; and get the appropriate installer or package for your platform. Install the package using standard procedures for your operating system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;Once you have both the Vagrant CLI and VirtualBox installed, create a new working directory and run &lt;code&gt;vagrant init&lt;/code&gt;. You'll notice that a file had been created. The Vagrantfile describes the type of VMs that are to be created in terms of the configuration and the method used to provision these VMs.&lt;/p&gt;

&lt;p&gt;Next for the purpose of this tutorial, get your favorite editor handy and copy the sample below. I've added comments, in hope to demystify some of the Vagrantfile magic.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# -*- mode: ruby -*-&lt;/span&gt;
&lt;span class="c1"&gt;# vi: set ft=ruby :&lt;/span&gt;

&lt;span class="c1"&gt;# All Vagrant configuration is done below. The "2" in Vagrant.configure&lt;/span&gt;
&lt;span class="c1"&gt;# configures the configuration version&lt;/span&gt;
&lt;span class="no"&gt;Vagrant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;

   &lt;span class="c1"&gt;# Defining a VM named controller&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;define&lt;/span&gt; &lt;span class="s2"&gt;"controller"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;

    &lt;span class="c1"&gt;# Every Vagrant development environment requires a box. You can search for&lt;/span&gt;
    &lt;span class="c1"&gt;# boxes at https://vagrantcloud.com/search.&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;box&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"minimal/xenial64"&lt;/span&gt;

    &lt;span class="c1"&gt;# Create a private network, which allows host-only access to the machine&lt;/span&gt;
    &lt;span class="c1"&gt;# using a specific IP.&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;network&lt;/span&gt; &lt;span class="s2"&gt;"private_network"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;ip: &lt;/span&gt;&lt;span class="s2"&gt;"192.168.50.4"&lt;/span&gt;

    &lt;span class="c1"&gt;# Create a public network, which generally matched to bridged network.&lt;/span&gt;
    &lt;span class="c1"&gt;# Bridged networks make the machine appear as another physical device on&lt;/span&gt;
    &lt;span class="c1"&gt;# your network.&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;network&lt;/span&gt; &lt;span class="s2"&gt;"public_network"&lt;/span&gt;

    &lt;span class="c1"&gt;# Provider-specific configuration so you can fine-tune various&lt;/span&gt;
    &lt;span class="c1"&gt;# backing providers for Vagrant. These expose provider-specific options.&lt;/span&gt;
    &lt;span class="c1"&gt;# Example for VirtualBox:&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;provider&lt;/span&gt; &lt;span class="ss"&gt;:virtualbox&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;vb&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
          &lt;span class="n"&gt;vb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;customize&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="s2"&gt;"modifyvm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s2"&gt;"--cpuexecutioncap"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"50"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s2"&gt;"--memory"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"1024"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;vagrant up controller&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;vagrant up [name|id]&lt;/code&gt; command creates and configures the VM according to your Vagrantfile in your current working directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F8wYAABm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F8wYAABm.png" alt="vagrant Up"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once up, run &lt;code&gt;vagrant status controller&lt;/code&gt; to confirm that the VM had been created and is running.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FZZDoPIe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FZZDoPIe.png" alt="vagrant status"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To ssh to the host run &lt;code&gt;vagrant ssh controller&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F0pCz0Eh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F0pCz0Eh.png" alt="vagrant ssh"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because we've configured the VM to belong to a private network in our Vagrantfile, we're able access the server using its private IP &lt;code&gt;192.168.50.4&lt;/code&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Provisioners
&lt;/h3&gt;

&lt;p&gt;Provisioners in Vagrant allow us to automate the installation of software, as well as alter the system configuration as part of the &lt;code&gt;vagrant up&lt;/code&gt; process.&lt;/p&gt;

&lt;p&gt;Of course, all the installation and configuration can be done by hand using &lt;code&gt;vagrant ssh&lt;/code&gt;. But by using the provisioning systems built-in to Vagrant, we can automate the process so that it is repeatable. Most importantly, it requires no human interaction, so we can &lt;code&gt;vagrant destroy&lt;/code&gt; and &lt;code&gt;vagrant up&lt;/code&gt; and have a fully ready-to-go work environment with a single command.&lt;/p&gt;

&lt;p&gt;Vagrant supports a multitude of provisioners. For the purpose of this tutorial we'll make use of the Ansible provisioner. We'll write a playbook to create a new user and amend our Vagrant file to run the playbook during the &lt;code&gt;vagrant up&lt;/code&gt; process. &lt;/p&gt;

&lt;p&gt;Get out your editor and create &lt;code&gt;main.yaml&lt;/code&gt; in the current working directory and copy the sample code below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Dev.to Vagrant with Ansible Demos&lt;/span&gt;
  &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;all&lt;/span&gt;

  &lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Add the user ansible with a specific uid and a primary group of 'admin'&lt;/span&gt;
      &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ansible&lt;/span&gt;
        &lt;span class="na"&gt;comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ansible created&lt;/span&gt;
        &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1040&lt;/span&gt;
        &lt;span class="na"&gt;group&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
      &lt;span class="na"&gt;become&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
      &lt;span class="na"&gt;become_user&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, amend the Vagrant file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# -*- mode: ruby -*-&lt;/span&gt;
&lt;span class="c1"&gt;# vi: set ft=ruby :&lt;/span&gt;

&lt;span class="c1"&gt;# All Vagrant configuration is done below. The "2" in Vagrant.configure&lt;/span&gt;
&lt;span class="c1"&gt;# configures the configuration version&lt;/span&gt;
&lt;span class="no"&gt;Vagrant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;

  &lt;span class="c1"&gt;# Defining a VM named controller&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;define&lt;/span&gt; &lt;span class="s2"&gt;"controller"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;

    &lt;span class="c1"&gt;# Every Vagrant development environment requires a box. You can search for&lt;/span&gt;
    &lt;span class="c1"&gt;# boxes at https://vagrantcloud.com/search.&lt;/span&gt;
        &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;box&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"minimal/xenial64"&lt;/span&gt;

    &lt;span class="c1"&gt;# Create a private network, which allows host-only access to the machine&lt;/span&gt;
    &lt;span class="c1"&gt;# using a specific IP.&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;network&lt;/span&gt; &lt;span class="s2"&gt;"private_network"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;ip: &lt;/span&gt;&lt;span class="s2"&gt;"192.168.50.4"&lt;/span&gt;

    &lt;span class="c1"&gt;# Create a public network, which generally matched to bridged network.&lt;/span&gt;
    &lt;span class="c1"&gt;# Bridged networks make the machine appear as another physical device on&lt;/span&gt;
    &lt;span class="c1"&gt;# your network.&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;network&lt;/span&gt; &lt;span class="s2"&gt;"public_network"&lt;/span&gt;

    &lt;span class="c1"&gt;# Provider-specific configuration so you can fine-tune various&lt;/span&gt;
    &lt;span class="c1"&gt;# backing providers for Vagrant. These expose provider-specific options.&lt;/span&gt;
    &lt;span class="c1"&gt;# Example for VirtualBox:&lt;/span&gt;
        &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;provider&lt;/span&gt; &lt;span class="ss"&gt;:virtualbox&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;vb&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;vb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;customize&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="s2"&gt;"modifyvm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s2"&gt;"--cpuexecutioncap"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"50"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s2"&gt;"--memory"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"1024"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="c1"&gt;# Run Ansible from the Vagrant Host&lt;/span&gt;
    &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;provision&lt;/span&gt; &lt;span class="s2"&gt;"ansible"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;ansible&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="n"&gt;ansible&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;playbook&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"main.yaml"&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and run &lt;code&gt;vagrant destroy controller&lt;/code&gt; and then &lt;code&gt;vagrant up controller&lt;/code&gt;. You'll see in the console output that the playbook is then executed as part of the &lt;code&gt;vagrant up&lt;/code&gt; process. See output below and of course, I checked that the user had been created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FdGmDIUR.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FdGmDIUR.png" alt="vagrant ansible"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FrRrAPnG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FrRrAPnG.png" alt="vagrant proof"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vagrant has been an essential to my development and my learning process. I hope I sparked some interest in this awesome tool. Vagrant has enabled me to learn both Puppet and Ansible and in general it improved my Sys Admin skill set. &lt;/p&gt;

&lt;p&gt;If there is an interest in wanting to learn more about Vagrant, I am definitely keen and showing you guys how to set up an entire Python web server stack using a Vagrantfile and Ansible. I hope you all enjoyed this read. &lt;/p&gt;

</description>
      <category>devops</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
