## Ansible inventarisbestand

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_interpreter`variabele die we zo dadelijk zullen zien.

Om de inhoud van je standaard Ansible-inventaris te bewerken, open jehet `/etc/ansible/hosts`bestand 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 `-i`parameter 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:vars`subgroep stelt de `ansible_python_interpreter`host 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/python3`uitvoerbare 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+X`te drukken, dan `Y`en `ENTER`om 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.