What is an Ansible Playbook and How to Write one on Your Own

Ansible is an open-source automation tool that simplifies IT infrastructure deployment and administration. One of Ansible's key features is the ability to create playbooks, which are a collection of instructions that specify the tasks that Ansible will accomplish. Ansible playbooks, their structure, and how to create them on your own will all be covered in this article.

What is an Ansible Playbook?

An Ansible playbook is a text file containing a series of instructions that outline the actions that Ansible will accomplish. Playbooks are authored in YAML, a markup language that is understandable by humans. One may define a set of activities that can be carried out in a certain order using playbooks. A task in a playbook is a module that does a certain activity, such installing a package, establishing a user, or transferring a file.

What are Ansible Playbooks Used for?

Ansible playbooks manage many tasks, assign roles, provide deployment procedures, and define settings and variables. Ansible playbooks manage the steps between the constructed machines or servers and get them structured and functioning the way the users need them to if you're utilizing several servers. Playbooks might be compared to instruction manuals.

Ansible playbooks may be used by users to control deployments to and settings of remote computers. Additionally, by launching tasks either synchronously or asynchronously, playbooks may schedule a multi-tiered rollout that leverages rolling updates.

In conclusion, Ansible playbooks allow users to effortlessly handle a number of devices and ensure that all impacted components function as a whole. It is a really useful resource for DevOps experts to have at their disposal.

What are the Different kinds of Variables in Ansible Playbook?

As no two systems are exactly comparable, Ansible employs variables to help users deal with system variations. Although they must always start with a letter, variable names can also contain digits, underscores, and other characters. Moreover, variables never have any white space.

With the "vars:" command, variables can be directly declared in playbooks. A given command, a proper name, a port, or a web server are all examples of variables. For instance, by adding a variable with the name "greeting" and the value "How's it going, eh," you might set up a playbook to greet individuals with that phrase. The message is displayed on the terminals when the user runs the playbook.

Ansible Playbook Structure

An Ansible playbook has a specified structure that must be followed. 

The structure is as follows −

- name: Playbook Name
 hosts: Group or Host
 become: true or false
 - name: Task Name
 module_name: Module Parameter=Value
 become: true or false
 - tag1
 - tag2

Let's examine each of these components in detail.

  • ---  This indicates the beginning of the YAML file.

  • name  This is the name of the playbook.

  • hosts  This is the group or host on which the playbook will be executed.

  • become  This specifies whether Ansible should become the superuser or not.

  • tasks  This is a list of tasks to be executed.

  • name  This is the name of the task.

  • module_name  This is the name of the module that will be executed. The module name is followed by a list of parameters in the form of parameter=value.

  • become  This specifies whether Ansible should become the superuser to execute the module or not.

  • tags  This is an optional list of tags that can be used to group tasks together.

Ansible Playbook Creation

Let's write a straightforward Ansible playbook to install Apache on a remote computer no w that we are familiar with its structure.

Step 1: Create the Playbook File

The first step is to create a new YAML file with a .yml extension. Let's call the file install_apache.yml.

Step 2: Define the Playbook

The next step is to define the playbook. Open the install_apache.yml file and add the following lines −

- name: Install Apache
 hosts: webserver
 become: true

This defines a playbook named Install Apache that will be executed on the webserver group. We have also specified that Ansible should become the superuser to execute the tasks.

Step 3: Define the Task

The next step is to define the task that will install Apache. Add the following lines to the playbook file −

- name: Install Apache
 name: apache2
 state: present

This defines a task named Install Apache that will use the apt module to install Apache. The name parameter specifies the package to be installed, and the state parameter specifies that the package should be present.

Step 4: Save and Run the Playbook

Save the playbook file and run the playbook using the ansible-playbook command. Here's an example −

ansible-playbook install_apache.yml

Ansible will connect

Furthermore, the following are helpful reminders to bear in mind when using Ansible play books −

  • Playbooks have a.yml file extension and are authored in the YAML language.

  • Run a playbook using this command: $ ansible-playbook <playbook.yml>

  • T check syntax errors in playbook use this command: $ ansible-playbook <playbook.yml> --syntax-check

  • Create lists. Lists define elements within playbook variables. Use the – symbol to create a list

  • Whitespace should be used. Each job or block can be separated by a blank line, which makes the playbook easier to browse.

  • Label each job. Although task naming is not required, it is useful. Choose names for each work that are clear and concise.

  • Incorporate the state. Although the'state' argument is not required, you may choose to utilise state settings such as'state=present' or'state=absent' for clarification.

  • Use comments. Even though you list the tasks and statuses, there are some situations that call for extra details. To assist users understand (or to remind yourself! ), what a job or play is doing, how it's doing it, and why, add a remark (beginning the line with a #)


In conclusion, Ansible playbooks are an essential part of IT infrastructure automation and deployment. They allow users to manage tasks, assign roles, provide deployment procedures, and define settings and variables in a straightforward and efficient manner. By creating playbooks, DevOps experts can effortlessly manage and deploy multiple devices and ensure that all impacted components function as a whole. Understanding the structure and syntax of playbooks is crucial to creating successful automation processes. By following the steps outlined in this article, users can create and execute their own Ansible playbooks to streamline their IT administration tasks. Overall, Ansible and its playbooks are valuable tools for any organization looking to automate their IT infrastructure deployment and administration.

Updated on: 27-Apr-2023


Kickstart Your Career

Get certified by completing the course

Get Started