Skip to content

Contact sales

By filling out this form and clicking submit, you acknowledge our privacy policy.
  • Labs icon Lab
  • A Cloud Guru
Google Cloud Platform icon
Labs

Ansible Playbooks - Error Handling

Advanced error handling is one of the many strengths of Ansible. Software systems are seldom perfect, and that is an issue in this exercise. Students must configure an Ansible playbook to handle an unreliable connection. This skill is not only essential for practical Ansible use, but also an objective on the Red Hat Certified Ansible Specialist Exam. *This course is not approved or sponsored by Red Hat.*

Google Cloud Platform icon
Labs

Path Info

Level
Clock icon Intermediate
Duration
Clock icon 1h 30m
Published
Clock icon Jul 11, 2018

Contact sales

By filling out this form and clicking submit, you acknowledge our privacy policy.

Table of Contents

  1. Challenge

    Create a playbook: `/home/ansible/report.yml`

    echo "---" >> /home/ansible/report.yml

  2. Challenge

    Configure the Playbook to Download *http://apps.l33t.com/transaction_list* to `/home/ansible/transaction_list` on `localhost` and Outputs the Message "File downloaded." to `stdout`

    Using a text editor, such as vim, edit /home/ansible/report.yml to contain the following text block below the line containing "---":

    - hosts: localhost
      tasks:
        - name: download transaction_list
          get_url:
            url: http://apps.l33t.com/transaction_list 
            dest: /home/ansible/transaction_list
        - debug: msg="File downloaded"
    
  3. Challenge

    Configure the Playbook to Handle Connection Failure by Outputting "l33t.com appears to be down. Try again later." to `stdout`

    Using a text editor, such as vim, edit the tasks section in /home/ansible/report.yml to contain the new lines as shown below. Note that the get_url line was changed to include a leading hyphen:

    ---
    - hosts: localhost
      tasks:
        - name: download transaction_list
          block:
            - get_url:
                url: http://apps.l33t.com/transaction_list
                dest: /home/ansible/transaction_list
            - debug: msg="File downloaded"
          rescue:
            - debug: msg="l33t.com appears to be down.  Try again later."
    
  4. Challenge

    Configure the Playbook to Output "Attempt Completed" to `stdout`, Whether It Was Successful or Not

    Using a text editor, such as vim, edit the tasks section in /home/ansible/report.yml to contain the new lines as shown below.

    ---
    - hosts: localhost
      tasks:
        - name: download transaction_list
          block:
            - get_url:
                url: http://apps.l33t.com/transaction_list
                dest: /home/ansible/transaction_list
            - debug: msg="File downloaded"
          rescue:
            - debug: msg="l33t.com appears to be down.  Try again later."
          always:
            - debug: msg="Attempt completed."
    
  5. Challenge

    Configure the Playbook to Replace All Instances of `#BLANKLINE` with the Line Break Character `\n`

    Using a text editor, such as vim, edit the block section in /home/ansible/report.yml to contain the new lines as shown below:

    ---
    - hosts: localhost
      tasks:
        - name: download transaction_list
          block:
            - get_url:
                url: http://apps.l33t.com/transaction_list
                dest: /home/ansible/transaction_list
            - replace: 
                path: /home/ansible/transaction_list 
                regexp: "#BLANKLINE"
                replace: '\n'
            - debug: msg="File downloaded"
          rescue:
            - debug: msg="l33t.com appears to be down.  Try again later."
          always:
            - debug: msg="Attempt completed."
    
  6. Challenge

    Verify Configuration by Running the Playbook

    ansible-playbook /home/ansible/report.yml

The Cloud Content team comprises subject matter experts hyper focused on services offered by the leading cloud vendors (AWS, GCP, and Azure), as well as cloud-related technologies such as Linux and DevOps. The team is thrilled to share their knowledge to help you build modern tech solutions from the ground up, secure and optimize your environments, and so much more!

What's a lab?

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.

Provided environment for hands-on practice

We will provide the credentials and environment necessary for you to practice right within your browser.

Guided walkthrough

Follow along with the author’s guided walkthrough and build something new in your provided environment!

Did you know?

On average, you retain 75% more of your learning if you get time for practice.

Start learning by doing today

View Plans