Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Writing Your First Playbook

1. Introduction

In this lesson, we will cover how to write your first Ansible playbook, an essential skill for automating tasks and managing configurations across servers.

2. What is a Playbook?

An Ansible playbook is a YAML file containing a list of tasks that Ansible will execute on specified hosts. It allows you to define the state of your systems and automate complex multi-step processes.

Key Features of Playbooks

  • Declarative: Define the desired state of your systems.
  • Human-readable: Written in YAML, making them easy to read and write.
  • Idempotent: Ensure that running the same playbook multiple times results in the same state.

3. Playbook Structure

Playbooks consist of a series of plays. Each play maps a group of hosts to roles or tasks. The basic structure is as follows:


---
- name: Example Playbook
  hosts: all
  tasks:
    - name: Install a package
      apt:
        name: 
        state: present
        update_cache: yes
        
Note: Each playbook begins with three dashes (---) indicating the start of a YAML document.

4. Writing a Simple Playbook

Let’s create a simple playbook to install the Apache web server:


---
- name: Install Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Install Apache package
      apt:
        name: apache2
        state: present
      notify: Start Apache

  handlers:
    - name: Start Apache
      service:
        name: apache2
        state: started
        enabled: yes
        

5. Best Practices

Here are some best practices to consider when writing playbooks:

  • Use descriptive names for plays and tasks for clarity.
  • Group tasks logically within plays.
  • Utilize variables to make playbooks reusable.
  • Test playbooks in a staging environment before deploying.

6. FAQ

What is the file extension for Ansible playbooks?

Ansible playbooks are usually saved with a .yml or .yaml file extension.

Can I run multiple playbooks at once?

Yes, you can run multiple playbooks sequentially by specifying them in a command or using a batch script.

What happens if a task fails?

If a task fails, the playbook will stop executing unless you specify ignore_errors: yes for that task.