Het inventarisbestand bevat informatie over de hosts die je met Ansible beheert. Je kunt overal van één tot enkele honderden servers in je inventarisbestand opnemen, en hosts kunnen in groepen en subgroepen worden georganiseerd. Het inventarisbestand wordt ook vaak gebruikt om variabelen in te stellen die alleen geldig zijn voor specifieke hosts of groepen, om te worden gebruikt in playbooks en sjablonen. Sommige variabelen kunnen ook van invloed zijn op de manier waarop een playbook wordt uitgevoerd, zoals de ansible_python_interpretervariabele die we zo dadelijk zullen zien.
Om de inhoud van je standaard Ansible-inventaris te bewerken, open jehet /etc/ansible/hostsbestand met je gewenste teksteditor op je Ansible-controleknooppunt:
sudo nano /etc/ansible/hosts
Opmerking : hoewel Ansible doorgaans een standaardinventarisbestand aanmaakt op etc/ansible/hosts, staat het je vrij om inventarisbestanden te maken op elke locatie die beter aan je behoeften voldoet. In dit geval moet je het pad naar je aangepaste inventarisbestand opgeven met de -iparameter wanneer je Ansible-opdrachten en playbooks uitvoert. Het gebruik van inventarisbestanden per project is een goede gewoonte om het risico van het draaien van een playbook op de verkeerde groep servers te minimaliseren.
Het standaard inventarisbestand dat wordt geleverd door de Ansible-installatie bevat een aantal voorbeelden die je kunt gebruiken als referentie voor het opzetten van je inventaris. In het volgende voorbeeld wordt een groep gedefinieerd [servers]met drie verschillende servers erin, elk geïdentificeerd door een aangepaste alias: server1 , server2 en server3 . Vervang de gemarkeerde IP's door de IP-adressen van je Ansible-hosts.
/etc/ansible/hosts
[ubuntu-server]
ubuntu-server ansible_host=192.168.182.130
[loadbalancers]
[servers]
server1 ansible_host=10.13.37.10
server2 ansible_host=10.13.37.11
server3 ansible_host=10.13.37.12
[database_servers]
[all_servers:children]
[all:vars]
ansible_connection=ssh
ansible_user=student
ansible_python_interpreter=/usr/bin/python3
De all:varssubgroep stelt de ansible_python_interpreterhost parameter in die geldig is voor alle hosts die in deze inventaris zijn opgenomen. Deze parameter zorgt ervoor dat de externe server het /usr/bin/python3uitvoerbare bestand Python3 gebruikt in plaats van /usr/bin/python(Python 2.7), dat niet aanwezig is in recente Ubuntu-versies. Daarnaast zie je de connection type SSH is en dat voor alle servers geldt dat er een gebruiker student is. Verschilt dat per configuratie? dan moet je het niet opnemen in je hosts inventarisbestand.
Wanneer je klaar bent, Opslaan en sluiten van het bestand door CTRL+Xte drukken, dan Yen ENTERom de wijzigingen te bevestigen.
Wanneer je de inventaris wilt controleren, kun je het volgende uitvoeren:
ansible-inventory --list -y
U zult vergelijkbare uitvoer zien, maar met uw eigen serverinfrastructuur zoals gedefinieerd in uw inventarisbestand:
all:
children:
all_servers: {}
database_servers: {}
loadbalancers: {}
servers:
hosts:
server1:
ansible_connection: ssh
ansible_host: 10.13.37.10
ansible_python_interpreter: /usr/bin/python3
ansible_user: student
server2:
ansible_connection: ssh
ansible_host: 10.13.37.11
ansible_python_interpreter: /usr/bin/python3
ansible_user: student
server3:
ansible_connection: ssh
ansible_host: 10.13.37.12
ansible_python_interpreter: /usr/bin/python3
ansible_user: student
ubuntu-server:
hosts:
ubuntu-server:
ansible_connection: ssh
ansible_host: 192.168.182.130
ansible_python_interpreter: /usr/bin/python3
ansible_user: student
ungrouped: {}
Nu je je inventarisbestand hebt geconfigureerd, heb je alles wat je nodig hebt om de verbinding met je Ansible-hosts te testen.