The Nautilus DevOps team had a discussion about, how they can train different team members to use Ansible for different automation tasks. There are numerous ways to perform a particular task using Ansible, but we want to utilize each aspect that Ansible offers. The team wants to utilise Ansible’s conditionals to perform the following task:
An inventory file is already placed under /home/thor/ansible directory on jump host, with all the Stratos DC app servers included.
Create a playbook /home/thor/ansible/playbook.yml and make sure to use Ansible’s when conditionals statements to perform the below given tasks.
Copy blog.txt file present under /usr/src/itadmin directory on jump host to App Server 1 under /opt/itadmin directory. Its user and group owner must be user tony and its permissions must be 0655 .
Copy story.txt file present under /usr/src/itadmin directory on jump host to App Server 2 under /opt/itadmin directory. Its user and group owner must be user steve and its permissions must be 0655 .
Copy media.txt file present under /usr/src/itadmin directory on jump host to App Server 3 under /opt/itadmin directory. Its user and group owner must be user banner and its permissions must be 0655.
NOTE:
You can use ansible_nodename variable from gathered facts with when condition. Additionally, please make sure you are running the play for all hosts i.e use - hosts: all.
Validation will try to run the playbook using command ansible-playbook -i inventory playbook.yml, so please make sure the playbook works this way without passing any extra arguments.
Move into ansible directory and check files
cd ansible
ls -la
cat inventory
Create an empty playbook.yml file
touch playbook.yml
Update playbook.yml with the contents from this YAML file
src path and mode based on your task descriptionRun the playbook
ansible-playbook -i inventory playbook.yml
Verify
ls -la /opt/itadmin
ansible_nodename is an automatically gathered fact that contains the hostname of the target machinewhen: clause to conditionally execute tasks based on facts, variables, or expressionsgather_facts: no==, !=, in, not in, is defined, is not definedand, or operators to combine multiple conditions