Host Patterns
vi /etc/ansible/hosts
//“all” pattern referes to all the machines in an inventory
ansible all --list-hosts
ansible <group name> --list-hosts
ansible <group name>[0] --list-hosts
//You can refer to hosts within the group by adding a subscript to the group name while giving the pattern
Groupname[0] -> Picks the first machine in the group
Groupname[1] -> Picks the second machine in the group
Groupname[-1] -> Picks the last machine in the group
Groupname[0:1] -> Picks first 2 machine in the group
//Group separated by colon can be used to use hosts from multiple groups
Groupname1:groupname2
Ansible ad-hoc commands
- Use of ad-hoc tasks really quick and don’t want to save for later
- These are quick one-liner without writing a playbook
- To run an arbitrary command use (-a)
ansible all --list-hosts
ansible demo –a “ls”
ansible demo –a “ls-al”
ansible demo –a “touch myfile” (re run and verify idempotence)
ansible demo –a “yum install httpd –y” (shows permission denied)
- To run anything with sudo, use –b
ansible demo –b –a “yum install httpd –y”
ansible demo –b –a “yum remove httpd –y”
Ansible Modules
- To run an arbitrary cmd use –a & use –m to run a module
ansible [group] –m <module> -z <cmd>
ansible demo –m ping
ansible demo –b –m yum –a “pkg=httpd state=present”
ansible demo –b –m yum –a “pkg=httpd state=latest”
ansible demo –b –m yum –a “pkg=httpd state=absent”
// State=present will install it
// State=latest will update
//State=absent will remove it
ansible demo –b –m service –a “name=httpd state=started”
ansible demo –b –m service –a “name=httpd state=restarted”
ansible demo –b –m service –a “name=httpd state=stopped”
- Create/Delete a user account
ansible demo –b –m user –a “name=raj”
ansible demo –b –m user –a “name=raj state=absent”
- Gathering facts (Idempotence)
ansible demo –m setup
ansible demo –m setup –a ‘filter=*ipv4*’
Playbooks
- Playbook is like a file where you write code. Playbooks are expressed in YAML format
ansible-playbook <playbook>.yml
- For Ansible, nearly every YAML file starts with a list
- Each item in the list is a list of key/value pairs, commonly called a “dictionary”
- All YAML files have to begin with “—” and end with “ —”
- All members of a list lines must begin with same indentation level starting with “-”
---# A list of tasty fruits
fruits:
- Apple
- Orange
- Straberry
- Mango
---
- A dictionary is represented in a simple key:value form
---#An employee record
Employee:
name: Ram
job: DevOps Engineer
skill: Elite
---