Hoe Statische en Dynamische Inventarissen in Ansible gebruiken – Deel 4

In dit Deel 4 van de Ansible Series, zullen we uitleggen hoe je statische en dynamische inventaris kunt gebruiken om groepen hosts in Ansible te definiëren.

In een Ansible worden beheerde hosts of servers die worden beheerd door de Ansible-controleknooppunt gedefinieerd in een hostinventarisbestand, zoals uitgelegd in. Een host inventory bestand is een tekstbestand dat bestaat uit hostnamen of IP-adressen van beheerde hosts of remote servers.

Beheerde hosts kunnen worden vermeld als individuele items of gecategoriseerd onder een groepsnaam zoals we later zullen zien. In Ansible, zijn er twee soorten inventaris bestanden: Static en Dynamic.

Laten we eens kijken naar elk van deze en zien hoe we ze kunnen beheren. We gaan ervan uit dat je Ansible al hebt geïnstalleerd op je Control node, en een wachtwoordloze SSH-verbinding hebt geconfigureerd met je beheerde hosts.

Static Host Inventory File

In Ansible is een statisch inventarisbestand een bestand in platte tekst dat een lijst bevat van beheerde hosts die zijn aangegeven onder een hostgroep met behulp van hostnamen of IP-adressen.

De naam van een hostgroep staat tussen vierkante haken, bijvoorbeeld . De beheerde hostvermeldingen worden later onder de groepsnaam vermeld, elk op een eigen regel. Zoals eerder besproken, worden de hosts vermeld met behulp van hostnamen of IP-adressen.

Host A ip_address Host B ip_addressHost c ip_address

Ter illustratie zullen we een statisch inventarisbestand maken.

# mkdir test_lab && cd test_lab# vim hosts
Static Inventory File
173.82.115.165173.82.220.239webserversdatabase_servers

Bewaar het bestand en sluit af.

Zoals u kunt zien in het inventarisbestand hierboven, hebben we 2 hostgroepen gemaakt: webservers en database_servers. Ook hebben we een extra groep aangemaakt genaamd datacenter die een groep hosts bevat aangeduid met ': children' suffix zoals hierboven te zien is.

Ansible staat ook toe om groepen hosts onder een groepsnaam te plaatsen. In het inventarisatiebestand hierboven zijn de webservers en database_servers groepen onder het datacenter geplaatst.

NOTE: Het is niet verplicht om beheerde hosts in een hostgroep te plaatsen. Je kunt ze gewoon in een lijst plaatsen met bijvoorbeeld hun hostnamen of IP-adressen.

173.82.202.239172.82.115.165load_balancer.pnl.com

Laten we nu een paar Ansible commando’s gebruiken om te verwijzen naar het host inventaris bestand. De basis syntaxis voor inventarisbeheer is zoals afgebeeld.

$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Voorbeeld,

$ ansible all -i /root/test_labs/hosts --list-hosts
List Ansible Hosts

Als alternatief kunt u het jokerteken * gebruiken om het 'all' argument te vervangen.

$ ansible * -i /root/test_labs/hosts --list-hosts
List Ansible Hosts Using Wildcards

Om hosts in een groep op te sommen, geeft u de hostgroep op in de plaats van host-patroon.

$ ansible webservers -i /root/test_labs/hosts --list-hosts
Lijst Ansible-hosts in groep

Dynamisch hostinventarisbestand

In een configuratie – vooral een cloudopstelling zoals AWS waar het inventarisbestand voortdurend wijzigt naarmate u servers toevoegt of buiten gebruik stelt – wordt het een hele uitdaging om de hosts die in het inventarisbestand zijn gedefinieerd, bij te houden. Het wordt lastig om terug te gaan naar het hostbestand en de lijst van hosts met hun IP-adressen bij te werken.

En dit is waar een dynamische inventaris om de hoek komt kijken. Dus wat is een dynamische inventaris? Een dynamische inventaris is een script geschreven in Python, PHP of een andere programmeertaal. Het komt van pas in cloud-omgevingen zoals AWS waar IP-adressen veranderen zodra een virtuele server wordt gestopt en opnieuw wordt gestart.

Ansible heeft al inventarisscripts ontwikkeld voor publieke cloud-platforms zoals Google Compute Engine, Amazon EC2 instance, OpenStack, RackSpace, cobbler, onder anderen.

Wat zijn de voordelen van een dynamische inventaris ten opzichte van een statische inventaris?
  • Dynamische inventarissen doen perfect werk in het verminderen van menselijke fouten, omdat informatie wordt verzameld met behulp van scripts.
  • Minimale inspanning is vereist bij het beheren van inventarissen.

U kunt uw eigen aangepaste dynamische inventaris schrijven in een programmeertaal van uw keuze. De inventaris moet een formaat in JSON teruggeven wanneer de juiste opties worden doorgegeven.

Gebruik een Bestaand Dynamische Inventaris Script

Een script dat wordt gebruikt om een dynamische inventaris te maken moet uitvoerbaar worden gemaakt zodat Ansible het kan gebruiken.

Om informatie op te halen over de hosts binnen een dynamisch inventaris script hoeft alleen maar te worden uitgevoerd.

# ./script --list 

Zoals eerder aangegeven, moet de uitvoer in JSON zijn in het onderstaande formaat.

Een woordenboek dat bestaat uit groepen (i.e webservers, database_Servers)
  • Een lijst van beheerde hosts per groep
  • Een woordenboek van variabelen
Meta dictionary
  • Hosts en hostvars
Voorbeelduitvoer
Conclusie

In dit artikel hebben we gedemonstreerd hoe je zowel statische als dynamische inventarissen kunt maken. Samengevat is een statisch inventarisbestand een tekstbestand met een lijst van beheerde hosts of remote nodes waarvan de nummers en IP-adressen redelijk constant blijven.

Aan de andere kant verandert een dynamisch hostbestand voortdurend wanneer u nieuwe hosts toevoegt of oude hosts buiten gebruik stelt. De IP adressen van hosts zijn ook dynamisch als je nieuwe host systemen stopt en start. We hopen dat je deze tutorial informatief vond.