Writing Your First Ansible Playbook

1 hour
  • 4 Learning Objectives

About this Hands-on Lab

Playbooks are the heart of Ansible. They provide a means of executing numerous tasks across any number of systems. This exercise sets you on the path to Ansible mastery by allowing you to craft and execute an Ansible playbook.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a basic playbook for all servers in the Ansible inventory.

Create a basic playbook in /home/ansible/bootstrap.yml that completes the noted task required for all servers in the Ansible inventory.

Create the file /home/ansible/bootstrap.yml and add the following content:

- hosts: all
  become: yes
  tasks:
    - name: edit host file
      lineinfile:
        path: /etc/hosts
        line: "169.168.0.1 ansible.xyzcorp.com"
    - name: install elinks
      package:
        name: elinks
        state: latest
    - name: create audit user
      user:
        name: xyzcorp_audit
        state: present
    - name: update motd
      copy:
        src: /home/ansible/motd
        dest: /etc/motd
    - name: update issue
      copy:
        src: /home/ansible/issue
        dest: /etc/issue
Add a section to the playbook for the Network servers in the Ansible inventory.

Add a section to the playbook in /home/ansible/bootstrap.yml that completes the noted task required for the network servers in the Ansible inventory.

Create a play in the file /home/ansible/bootstrap.yml similar to the following:

 - hosts: network
   become: yes
   tasks:
     - name: install netcat
       yum:
         name: nmap-ncat
         state: latest
     - name: create network user
       user:
         name: xyzcorp_network
         state: present
Add a section to the playbook for the SysAdmin servers in the Ansible inventory.

Add a section to the playbook in /home/ansible/bootstrap.yml that completes the noted task required for the sysadmin servers in the Ansible inventory.

Create a play in the file /home/ansible/bootstrap.yml similar to the following:

 - hosts: sysadmin
   become: yes
   tasks:
     - name: copy tarball
       copy:
         src: /home/ansible/scripts.tgz
         dest: /mnt/storage/
Execute playbook to verify your playbook works correctly.

Execute playbook /home/ansible/bootstrap.yml to verify your playbook works correctly.

Run ansible-playbook /home/ansible/bootstrap.yml from the control node.

Additional Resources

Your supervisor has asked you to find a way to automate and audit basic system configuration for new servers in your environment. Given that Ansible is already configured at a basic level in your environment, the simplest solution would be to just write a playbook for bootstrapping your new hosts. Create a playbook called /home/ansible/bootstrap.yml to fulfill the following boot strap requirements:

All servers:

  • Edit /etc/hosts to include the following entry: ansible.xyzcorp.com 169.168.0.1
  • Install elinks
  • Create the user xyzcorp_audit
  • Copy the files /home/ansible/motd and /home/ansible/issue to /etc/

Network servers:

  • Install nmap-ncat
  • Create the user xyzcorp_network

SysAdmin servers:

  • Copy /home/ansible/scripts.tgz from the control node to /mnt/storage

The Ansible control node has been configured for you and each testing server has already been configured for use with Ansible. The default inventory has been configured to include a the groups network and sysadmin. Each group includes a sample host.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?