Besides being an objective on the Red Hat Certified Ansible Specialist Exam, a demonstrated ability to use Ansible templates, variables, and facts is essential to practical systems deployment through Ansible. Templates allow for a streamlined approach to configuration management that reduces configuration error and simplifies system upkeep. This learning activity starts a student on a path from basic Ansible knowledge to a strong working knowledge that is necessary for real-world application.
*This course is not approved or sponsored by Red Hat.*
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a Template *sudoers* File in `/home/ansible/hardened.j2` That Produces a File with Appropriate Output for Each Host
touch /home/ansible/hardened.j2
- The Deployed File Should Resemble the Example File Except with the *IP* and *hostnames* Customized Appropriately
Edit hardened.j2 to contain the following text:
%sysops {{ ansible_default_ipv4.address }} = (ALL) ALL Host_Alias WEBSERVERS = {{ groups['web']|join(', ') }} Host_Alias DBSERVERS = {{ groups['database']|join(', ') }} %httpd WEBSERVERS = /bin/su - webuser %dba DBSERVERS = /bin/su - dbuser
- Create a Playbook in `/home/ansible/security.yml` That Uses the Template Module to Deploy the Template on All Servers in the Default Ansible Inventory After Validating the Syntax of the Generated File
Edit /home/ansible/security.yml to contain the following:
--- - hosts: all become: yes tasks: - name: deploy sudo template template: src: /home/ansible/hardened.j2 dest: /etc/sudoers.d/hardened validate: /sbin/visudo -cf %s
- Run the Playbook and Ensure the Files Are Correctly Deployed
ansible-playbook /home/ansible/security.yml
Check the local /etc/sudoers.d/hardened on the ansible control node for the correct contents.