Book Image

Hands-On DevOps with Vagrant

By : Alex Braunton
Book Image

Hands-On DevOps with Vagrant

By: Alex Braunton

Overview of this book

Hands-On DevOps with Vagrant teaches you how to use Vagrant as a powerful DevOps tool and gives an overview of how it fits into the DevOps landscape. You will learn how to install VirtualBox and Vagrant in Windows, macOS, and Linux. You will then move on to understanding Vagrant commands, discovering its boxes and Vagrant Cloud. After getting to grips with the basics, the next set of chapters helps you to understand how to configure Vagrant, along with networking. You will explore multimachine, followed by studying how to create multiple environments and the communication between them. In addition to this, you will cover concepts such as Vagrant plugins and file syncing. The last set of chapters provides insights into provisioning shell scripts, also guiding you in how to use Vagrant with configuration management tools such as Chef, Ansible, Docker, Puppet, and Salt. By the end of this book, you will have grasped Vagrant’s features and how to use them for your benefit with the help of tips and tricks.
Table of Contents (21 chapters)
Title Page
Dedication
Packt Upsell
Contributors
Preface
Index

Ansible Playbooks


An Ansible Playbook is a configuration file used by Ansible. You can think of it as a Vagrantfile for Vagrant. It uses the YAML (Yet Another Markup Language) markup language as the syntax and is easily readable:

---
 - hosts: all
     sudo: yes
     tasks:
         - name: ensure nginx is at the latest version
             apt: name=nginx state=latest
         - name: start nginx
             service:
                 name: nginx
                 state: started

Let's look at the example playbook we created in the previous section, shown here in the above code block, and dissect it to get a better understanding of what it all means:

  • The first line is always three dashes to signify the beginning of the file.
  • We must then define which hosts this applies to. These can often be defined in the Ansible inventory file by setting a value such as [db] and supplying an IP address for that node.
  • We then set the sudo value to yes as we require sudo/root privileges to install Nginx on the...