Il costo della complessità: Ansible AWX
5 Maggio 2024
Inventario di Ansible
In questo articolo vediamo le due modalità per definire un inventario usabile da Ansible. L’inventario è la source of truth contenente le informazioni che Ansible userà per collegarsi ai dispositivi. L’inventario permette anche di definire variabili a livello di host o gruppo. In particolare le variabili possono essere usate, in scenari avanzati, per definire tutti i parametri dell’infrastruttura, ad esempio: interfacce, indirizzi IP, router ID…
Ansible supporta inventari di tipo statico e dinamico. L’inventario statico è definito da un file in formato INI o YAML, mentre l’inventario dinamico è un eseguibile che stampa un JSON in standard output.
Inventario statico in formato INI
L’inventario statico in formato INI segue il seguente formato:
[all]
r1.example.com ansible_host=169.254.1.21
[routers]
r[1:9].example.com
[routers:vars]
ansible_user=admin
ansible_ssh_pass=cisco
ansible_connection=ansible.netcommon.network_cli
ansible_network_os=cisco.ios.ios
Inventario statico in formato YAML
L’inventario statico in formato YAML segue il seguente formato:
all:
hosts:
r1.example.com:
ansible_host: 169.254.1.21
routers:
hosts:
r[1:9].example.com:
vars:
ansible_user: admin
ansible_ssh_pass: cisco
ansible_connection: ansible.netcommon.network_cli
ansible_network_os: cisco.ios.ios
Inventario dinamico in formato JSON
Come descritto prima, l’inventario dinamico deve utilizzare il formato JSON secondo il seguente formato:
{
"_meta": {
"hostvars": {
"r1.example.com": {
"ansible_host": "169.254.1.21"
}
}
},
"routers": {
"hosts": [
"r1.example.com"
],
"vars": {
"ansible_connection": "ansible.netcommon.network_cli",
"ansible_network_os": "cisco.ios.ios",
"ansible_ssh_pass": "cisco",
"ansible_user": "admin"
}
}
}