Ansible Behavior Inventory Parameters
- Refer Here for official docs
- Some Inventory Parameters
- ansible_host: This will be host name or ipaddress which ypu can set to the host
- Consider this inventory file
myfavoriteserver ansible_host="172.31.4.122" yourfavoriteserver.com ansible_host="localhost"- Now lets run simple ansible ping adhoc command
ansible -i hosts -m ping all
- ansible_port: Specifies the port number that Ansible will use to connect to inventory host, Sample inventory
localhost ansible_port=8922- ansible_user: Specifies the username that ansible will connect to the inventory host.
- ansible_ssh_pass: Used to provide the ssh password to authenticate with inventory host.
192.168.10.23 ansible_user="admin" ansible_ssh_pass="admin123"- ansible_ssh_private_key_file: Used to specify the SSH private key file to connect to inventory host
34.25.15.14 ansible_user="ec2_user" ansible_ssh_private_key_file="./ansible.pem"- ansible_ssh_common_args: This defines ssh arguments to append to default arguments for ssh, sftp and scp
- ansible_sftp_extra_args: Used to specify additional sftp arguments
- ansible_scp_extra_args: Used to specify additional scp arguments
- ansible_ssh_extra_args: Used to specify additional ssh arguments
- ansible_ssh_executable:
- ansible_become: This defines whether privilege escalation(sudo or otherwise) should be with this host
- ansible_become_method: Which method to use for privilege and can be one of sudo, su, pfexec,doas,dzdo,pbrun or ksu
- ansible_become_user: This is user to become through privilege escalation
- ansible_become_pass: This is password for become user.
- ansible_sudo_pass: This is sudo password to use
- ansible_connection: This is the connection type of the host. values are one of ssh,local,smart,docker, paramiko or winrm. Default is smart
- ansible_docker_extra_args:
- ansible_shell_type: Default shell of the inventory host
- ansible_shell_executable: Default shell types executable
- ansible_python_interpreter: This is used to manually set the path of python interpreter on a given host in the inventory
- Consider the below inventory
[python3] 172.31.3.192 ansible_python_interpreter="/usr/bin/python3" [python2] localhost- Now run simple adhoc command “`ansible -i diffpythonhosts -m ping all

- ansible_host: This will be host name or ipaddress which ypu can set to the host
Inventory Limiting
- Consider the following inventory
[webserver]
172.31.3.192 ansible_python_interpreter="/usr/bin/python3"
172.31.4.122
[local]
localhost
- Now we have written a playbook or adhoc command for
ansible -m ping all
- Playbook is
---
- name: just fun
hosts: all
tasks:
- name: ping host
ping:
- name: print host
debug:
var: inventory_host
- Now executing this playbook will result as shown below

- Now we can supply –limit as shown below

Ansible Variables in separate files
- Rather than writing variable data in inventory, it is a best practice to write them separately in a file, for that we need to understand how to create files for group variables and host variables
- Lets assume this inventory and create it in a file called as hosts
[webservers]
172.31.4.122
172.31.3.192
[dbservers]
localhost
- Now the following playbook is created
---
- name: just fun
hosts: all
tasks:
- name: ping host
ping:
- name: print host
debug:
var: inventory_hostname
- name: print variable
debug:
var: from_where
- Lets add the following entries in group_vars/webservers.yaml
---
from_where: group_webservers
- In group_vars/dbservers.yaml
---
from_where: group_dbservers
- In host_vars/172.31.3.192.yaml
---
ansible_python_interpreter: "/usr/bin/python3"
from_where: hosts_172.31.3.192
- Lets look at folder structure

- The convention is in the folder wherever you have inventory in the same folder create folder named "group_vars" and the file name will be
group_vars/<groupname>.yaml. Similarly for host variable the file names will behost_vars/<hostname>.yaml - lets execute playbook

Next Steps
- Steps while parsing playbooks
- Order of operations
- Play behavior directives
- Execution strategies
