Ansible

Hoe Ansible Inventory in JSON-formaat te bouwen

Hoe Ansible Inventory in JSON-formaat te bouwen
Standaard gebruikt een Ansible-inventarisbestand de INI-configuratie-indeling. U kunt ook de JSON-configuratie-indeling (JavaScript Object Notation) gebruiken voor Ansible-inventarisbestanden.

In dit artikel laat ik je zien hoe je het JSON-configuratieformaat gebruikt om de Ansible-inventarisbestanden te bouwen. Dus laten we beginnen.

Vereisten:

Als je de voorbeelden van dit artikel wilt uitproberen,

1) Je moet Ansible op je computer hebben geïnstalleerd.
2) U moet minimaal 6 Linux-hosts hebben geconfigureerd voor Ansible-automatisering.

Er zijn veel artikelen over LinuxHint gewijd aan het installeren van Ansible en het configureren van hosts voor Ansible-automatisering. Je kunt ze bekijken als dat nodig is.

Een projectmap maken:

In dit artikel ga ik de Visual Studio-code gebruiken voor het bewerken van het Ansible-configuratiebestand, het inventarisbestand en de playbooks. U kunt elke gewenste editor of IDE gebruiken.

Laten we, voordat u begint, een projectmap maken, zodat we onze projectbestanden kunnen ordenen.

Ik heb een nieuwe projectdirectory gemaakt json-inventaris/ in mijn HUIS map zoals je kunt zien in de onderstaande schermafbeelding.

Zodra u een nieuwe projectmap hebt gemaakt, opent u deze met uw favoriete teksteditor of IDE.

Ga in Visual Studio Code naar het dossier > Open folder… zoals aangegeven in de onderstaande schermafbeelding.

Selecteer nu de projectdirectory json-inventaris/ en klik op OK.

De projectmap moet worden geopend met Visual Studio Code.

Klik nu op Nieuw bestand  en maak een nieuw bestand aan weerbaar.cfg.

Typ vervolgens de volgende regels in de weerbaar.cfg het dossier.

[standaard]
inventaris          = hosts.json
host_key_checking  = False

Als u klaar bent, drukt u op + S om de te redden weerbaar.cfg het dossier.

Maak op dezelfde manier een gastheren.json het dossier. Dit is het JSON-inventarisbestand. Laat het voor nu leeg. We zullen er later aan werken.

Klik nu op Nieuwe map  en maak een nieuwe map aan draaiboeken zoals weergegeven in de onderstaande schermafbeelding.

Hosts toevoegen aan het JSON-inventarisbestand:

In deze sectie laat ik u zien hoe u hosts aan uw inventarisbestand kunt toevoegen in JSON-indeling.

In de gastheren.json inventarisbestand, voeg je een alle sectie.


"alle":

In alle sectie, voeg je een . toe gastheer sectie en voeg je hosts toe.


"alle":
"hosts":
"host1": null,
"host2": null


U kunt bijvoorbeeld de hosts toevoegen vm1.nodekite.com en vm2.nodekite.com in de gastheren.json inventarisbestand als volgt:.


"alle":
"hosts":
"vm1.nodekite.com": null,
"vm2.nodekite.com": null


Als u klaar bent, drukt u op + S om de te redden gastheren.json het dossier.

U kunt controleren welke hosts beschikbaar zijn in uw inventarisbestand met het volgende commando:

$ ansible --list-hosts all

Zoals je kunt zien, zijn de hosts die ik heb toegevoegd in mijn inventarisbestand (vm1.nodekite.com en vm2.nodekite.com) worden vermeld.

Hosts groeperen in het JSON-inventarisbestand:

In deze sectie ga ik je laten zien hoe je hosts groepeert in je JSON-inventarisbestand.

De standaard hostgroep in Ansible is alle. De alle groep heeft alle hosts van elke groep (inclusief de hosts van alle groep).

U voegt gastgroepen toe in de kinderen gedeelte van uw JSON-inventarisbestand.


"alle":

"kinderen":
"groep 1":
,
"groep2":



Om bijvoorbeeld de hosts toe te voegen vm3.nodekite.com en vm4.nodekite.com in de web groep, en om de hosts toe te voegen vm5.nodekite.com en vm6.nodekite.com in de db groep, typt u de volgende regels in uw JSON-inventarisbestand:.


"alle":
"hosts":
"vm1.nodekite.com": null,
"vm2.nodekite.com": null
,
"kinderen":
"web":
"hosts":
"vm3.nodekite.com": null,
"vm4".nodekite.com": null

,
"db":
"hosts":
"vm5.nodekite.com": null,
"vm6.nodekite.com": null




Als u klaar bent, drukt u op + S om de te redden gastheren.json het dossier.

Hier voegen de gemarkeerde lijnen de hosts toe vm3.nodekite.com en vm4.nodekite.com in de web groep.

De gemarkeerde lijnen voegen de hosts toe vm5.nodekite.com en vm6.nodekite.com in de db groep.

Nu kunt u alle beschikbare hosts in uw JSON-inventarisbestand weergeven met de volgende opdracht:

$ ansible --list-hosts all

Zoals je kunt zien, zijn alle hosts van elke groep (web, db, en alle) worden tentoongesteld.

Om de beschikbare hosts van de . weer te geven web alleen groep, voer de volgende opdracht uit:

$ ansible --list-hosts web

Zoals u kunt zien, zijn alle hosts in de web groep worden weergegeven.

Op dezelfde manier kunt u alle beschikbare hosts van de db groep met het volgende commando:

$ ansible --list-hosts db

Zoals u kunt zien, zijn alle hosts in de db groep worden weergegeven.

Globale feiten toevoegen aan het JSON-inventarisbestand:

In Ansible worden variabelen ook wel feiten genoemd. Globale feiten of globale variabelen zijn toegankelijk vanaf elke host van elke groep in uw JSON-inventarisbestand. In deze sectie laat ik je zien hoe je globale feiten of globale variabelen kunt toevoegen in ansible.

U kunt globale feiten of globale variabelen toevoegen in de vars gedeelte binnen alle gedeelte van uw JSON-inventarisbestand als volgt:


"alle":
"hosts":

,
"var":
"variabele1": "waarde1",
"variabele2": "waarde2"
,
"kinderen":
"web":

,
"db":




U kunt bijvoorbeeld de globale feiten/variabelen toevoegen webroot en inhoudsopgave in de vars gedeelte van uw JSON-inventarisbestand als volgt:


"alle":
"hosts":
"vm1.nodekite.com": null,
"vm2.nodekite.com": null
,
"var":
"webroot": "/var/www/html",
"index": "index".php"
,
"kinderen":
"web":
"hosts":
"vm3.nodekite.com": null,
"vm4".nodekite.com": null

,
"db":
"hosts":
"vm5.nodekite.com": null,
"vm6.nodekite.com": null




Als u klaar bent, drukt u op + S om het JSON-inventarisbestand op te slaan.

Om te controleren of de globale feiten/variabelen werken, ga ik een nieuw draaiboek maken print_vars1.yaml. Het doel van dit draaiboek is om de feiten/variabelen af ​​te drukken met behulp van de debuggen module van Ansible. Het zal ons later ook helpen de voorrang van feiten/variabelen te begrijpen.

Dus maak een nieuw draaiboek print_vars1.yaml in uw draaiboeken/ directory en typ de volgende regels in uw print_vars1.yaml het dossier.

- hosts: alle
gebruiker: ansible
taken:
- naam: Webroot en index afdrukken
debuggen:
bericht: 'WebRoot webroot en Index index'

Als u klaar bent, drukt u op + S om de te redden print_vars1.yaml het dossier.

Om te controleren of de globale feiten/variabelen werken, voert u de print_vars1.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_vars1.yaml

Het playbook zou succesvol moeten worden uitgevoerd.

Scroll terug naar de TAAK sectie. Zoals je kunt zien, is de webroot en inhoudsopgave feiten/variabelen worden toegepast op elke host in mijn JSON-inventarisbestand. Dus globale feiten/variabelen werken.

Groepsfeiten toevoegen aan het JSON-inventarisbestand:

Je kunt ook feiten/variabelen toevoegen voor een specifieke gastgroep. In deze sectie laat ik u zien hoe u groepsfeiten/variabelen toevoegt aan uw JSON-inventarisbestand.

Ik ga hetzelfde toevoegen webroot en inhoudsopgave feiten in de web hostgroep van mijn JSON-inventarisbestand. De waarde van deze feiten zal anders zijn. Ik heb het gedaan zodat je ook kunt begrijpen hoe feiten/variabele voorrang werkt in Ansible.

Om de feiten toe te voegen webroot en inhoudsopgave in de web hostgroep, voeg a . toe vars sectie in de web gedeelte van uw JSON-inventarisbestand als volgt:


"alle":
"hosts":
"vm1.nodekite.com": null,
"vm2.nodekite.com": null
,
"var":
"webroot": "/var/www/html",
"index": "index".php"
,
"kinderen":
"web":
"hosts":
"vm3.nodekite.com": null,
"vm4".nodekite.com": null
,
"var":
"webroot": "/web/public_html",
"index": "index".html"

,
"db":
"hosts":
"vm5.nodekite.com": null,
"vm6.nodekite.com": null




Als u klaar bent, drukt u op + S om het JSON-inventarisbestand op te slaan.

Om de feiten te controleren, voert u de print_vars1.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_vars1.yaml

Zoals je kunt zien, de groepsfeiten webroot en inhoudsopgave zijn alleen beschikbaar voor de hosts vm3.nodekite.com en vm4.nodekite.com, de gastheren in de web groep.

Merk ook op dat de groepsfeiten (webroot en inhoudsopgave) verving de globale feiten (webroot en inhoudsopgave). Je kunt dus zeggen dat de groepsfeiten een hogere prioriteit hebben dan de globale feiten.

Hostfeiten toevoegen aan het JSON-inventarisbestand:

U kunt ook hostspecifieke feiten/variabelen toevoegen aan uw JSON-inventarisbestand. In dit gedeelte laat ik u zien hoe u hostspecifieke feiten/variabelen toevoegt aan uw JSON-inventarisbestand.

Voor globale of groepsfeiten hebben we de waarde van de hosts behouden nul.

Om hostfeiten toe te voegen, vervangt u nul met uw hostfeiten in het JSON-inventarisbestand als volgt:

"hosts":
"host1":
"var1": "waarde1",
"var2": "waarde2",
,
"host2":
"var2": "waarde3",
"var3": "waarde4",

Om bijvoorbeeld de toe te voegen inhoudsopgave gastheer feit aan de vm5.nodekite.com hosten, vervangen nul met de hostfeiten als volgt:.


"alle":
"hosts":
"vm1.nodekite.com": null,
"vm2.nodekite.com": null
,
"var":
"webroot": "/var/www/html",
"index": "index".php"
,
"kinderen":
"web":
"hosts":
"vm3.nodekite.com": null,
"vm4".nodekite.com": null
,
"var":
"webroot": "/web/public_html",
"index": "index".html"

,
"db":
"hosts":
"vm5.nodekite.com":
"index": "index".pie"
,
"vm6.nodekite.com": null




Als u klaar bent, drukt u op + S om het JSON-inventarisbestand op te slaan.

Om de beschikbare feiten te controleren, voert u de print_vars1.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_vars1.yaml

Zoals je kunt zien, is de inhoudsopgave feit is alleen beschikbaar voor de vm5.nodekite.com gastheer.

Merk ook op dat het hostfeit het globale feit heeft vervangen. De hostfeiten/variabelen hebben de hoogste prioriteit in Ansible. Dus de hoofdfeiten/variabelen zullen de groepsfeiten/variabelen en globale feiten/variabelen vervangen.

Conclusie:

In dit artikel heb ik je laten zien hoe je een Ansible-inventarisbestand in JSON-indeling kunt bouwen. Ik heb je laten zien hoe je hosts toevoegt, hostgroepen toevoegt, globale feiten toevoegt, groepsfeiten toevoegt en hostfeiten toevoegt aan je inventarisbestand in JSON-formaat.

Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...