Inventarios
Introducción
Un inventario es un archivo en formato INI, el cual contiene los hostnames o las IPs administrados con Ansible. Los inventarios se usan para declarar grupos y así clasificar los entornos donde trabajar con las ejecuciones de ansible, mediante corchetes podemos declarar grupos para clasificarlos.
Por lo general el fichero de inventario se crearía en un directorio de proyectos Ansible en su directorio personal y a la hora de ejecutar un comando de ansible el inventario se indica con la opción -i. ansible -i inventory -list-hosts
Ejemplo de fichero de inventario:
[ansible@ansible000 ~]$ cat inventario ansible_master [grupo1] ansible000 [grupo2] ansible001 [grupo_secreto] server1 ansible_ssh_host=10.91.59.110 server2 ansible_ssh_host=10.91.59.111 [grupo_ip] 205.168.20.[11:15]
Además de los grupos declarados en el inventario existen dos grupos más: “all” y “ungrouped”. El primero contiene todas las maquinas del inventario el resto de máquinas que no están vinculadas a ningún grupo, como seria “localhosts”, (si no está declarada en el inventario) formará parte del grupo “ungrouped”.
Búsquedas en el inventario
[ansible@ansible000 ~]$ ansible all -i inventario --list-host
hosts (3):
ansible_master
ansible000
ansible001
[ansible@ansible000 ~]$ ansible grupo1 -i inventario --list-host
hosts (1):
ansible000
Caso practico
Configure Ansible.
• Create a configuration file called /home/admin/ansible/ansible.cfg so that: o The host inventory file is /home/admin/ansible/inventory. o The default content collections path is /home/admin/ansible/mycollection. o The default roles directory is /home/admin/ansible/roles. o The default logs directory is /home/admin/ansible/logs.
[admin@Con-node ansible]$ ansible-config init --disabled > ansible.cfg [admin@Con-node ansible]$ cat /home/admin/ansible/ansible.cfg [defaults] inventory=/home/admin/ansible/inventory collections_paths=/home/admin/ansible/mycollections roles_paths=/home/admin/ansible/roles log_path=/home/admin/ansible/ansible.log Create inventories.
• Define the following inventory at /home/admin/ansible/inventory: o servera belongs to the dev group. o serverb belongs to the test group. o serverc and serverd belong to the prod group. o servere belongs to the balancers group. o The prod group is a child of the webservers group. • Include another set of hosts in the same inventory file: o Assign aliases server1 to server5 to IPs 10.91.50.1 - 10.91.50.5 and add them to the servers group. o Include hosts with IPs in the range 192.168.1.10 - 192.168.1.15 in the dbservers group.
[root@control-node examen]# cat /home/admin/ansible/inventory
[dev] servera.lab.example.com
[test] serverb.lab.example.com
[prod] serverc.lab.example.com serverd.lab.example.com
[balancers] servere.lab.example.com
[webservers:children] prod
[servers] server1 ansible_ssh_host=10.91.50.1 server2 ansible_ssh_host=10.91.50.2 server3 ansible_ssh_host=10.91.50.3 server4 ansible_ssh_host=10.91.50.4 server5 ansible_ssh_host=10.91.50.5
[dbservers] 192.168.1.[10-15]