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.*
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a playbook: `/home/ansible/report.yml`
echo "---" >> /home/ansible/report.yml
- 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"
- 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 theget_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."
- 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."
- 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."
- Verify Configuration by Running the Playbook
ansible-playbook /home/ansible/report.yml