Ansible

Hoe Ansible Custom Facts te gebruiken

Hoe Ansible Custom Facts te gebruiken
Feiten zijn als variabelen in Ansible. Ansible genereert veel feiten, afhankelijk van de host die het automatiseert. Indien nodig, kunt u ook aangepaste feiten/variabelen definiëren in Ansible.

U kunt drie soorten aangepaste feiten definiëren in Ansible.

1) Wereldwijde feiten: Deze feiten zijn toegankelijk vanaf elke host in uw inventarisbestand.
2) Groepsfeiten: Deze feiten zijn alleen toegankelijk vanaf een specifieke set hosts of een hostgroep.
3) Gastfeiten: Deze feiten zijn alleen toegankelijk vanaf een bepaalde host.

In dit artikel laat ik je zien hoe je kunt werken met Ansible custom facts. 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 opzetten:

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

Een projectmap maken: gewoonte-feiten/ in uw HUIS map, voer de volgende opdracht uit:

$ mkdir -pv custom-facts/playbooks,host_vars,group_vars

Navigeer nu naar de gewoonte-feiten/ map als volgt:

$ cd custom-facts/

Een Ansible-configuratiebestand maken weerbaar.cfg in uw projectdirectory als volgt:

$ nano mogelijk.cfg

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

[standaard]
inventaris           = hosts
host_key_checking   = False

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden weerbaar.cfg configuratiebestand.

Maak nu een Ansible-inventarisbestand gastheren in uw projectdirectory als volgt:

$ nano-hosts

Typ de volgende regels in je van de gastheer inventarisbestand.

vm1.nodekite.com
vm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[databank]
vm[5:6].nodekite.com

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden gastheren inventarisbestand.

Voer de volgende opdracht uit om alle beschikbare hosts in uw inventarisbestand weer te geven:

$ ansible all --list-hosts

Zoals je kunt zien, heb ik zes hosts in mijn inventarisbestand.

Om de beschikbare hosts in de . weer te geven web groep van uw inventarisbestand, voert u de volgende opdracht uit:

$ ansible web --list-hosts

Zoals je kunt zien, heb ik twee hosts (vm3.nodekite.com en vm4.nodekite.com) in de web groep van mijn inventarisbestand.

Om de beschikbare hosts in de . weer te geven database groep van uw inventarisbestand, voert u de volgende opdracht uit:

$ ansible database --list-hosts

Zoals je kunt zien, heb ik twee hosts (vm5.nodekite.com en vm6.nodekite.com) in de database groep van mijn inventarisbestand.

Werken met Ansible Global Facts:

In deze sectie ga ik je laten zien hoe je Ansible globale feiten/variabelen in je inventarisbestand definieert en ze opent vanuit je Ansible playbooks. Ik zal je ook laten zien hoe je globale feiten/variabelen definieert in een apart bestand.

Open eerst de van de gastheer inventarisbestand met het volgende commando:

$ nano-hosts

Voeg nu de gemarkeerde regels toe aan uw van de gastheer inventarisbestand. Als u klaar bent, drukt u op + X gevolgd door Y en om het bestand op te slaan.

'

U voegt globale feiten toe in de alles:vars sectie. Hier heb ik de . toegevoegd web_url globaal feit.

Maak nu een nieuw playbook print_global_fact.yaml in de draaiboeken/ map als volgt:

$ nano playbooks/print_global_fact.yaml

Typ vervolgens de volgende regels in de print_global_fact.yaml het dossier.

- hosts: alle
gebruiker: ansible
taken:
- naam: druk de waarde van het globale feit 'web_url' af
debuggen:
bericht: 'Web-URL: web_url'

Het doel van dit draaiboek is om de web_url globaal feit.

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden print_global_fact.yaml het dossier.

Voer nu de print_global_fact.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_global_fact.yaml

Zoals je kunt zien, hebben alle hosts in mijn inventarisbestand toegang tot het globale feit web_url.

U kunt ook globale feiten in een apart bestand toevoegen. Op deze manier kunt u het inventarisbestand schoon houden. Laten we eens kijken hoe het te doen.

Laten we eerst de globale feiten uit de van de gastheer inventarisbestand.

$ nano-hosts

Verwijder nu de gemarkeerde regels uit het inventarisbestand en druk op + X, gevolgd door Y en om het inventarisbestand op te slaan.

Maak dan een nieuw bestand aan alle in de group_vars/ map als volgt:

$ nano group_vars/all

Om het globale feit toe te voegen web_url, typ de volgende regel in de group_vars/all het dossier.

web_url: https://www.linuxhint.com

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden group_vars/all het dossier.

Om te controleren of u toegang heeft tot het globale feit web_url, voer de ... uit print_global_fact.yaml playbook weer als volgt:

$ ansible-playbook playbooks/print_global_fact.yaml

Zoals je kunt zien, hebben alle hosts in mijn inventarisbestand toegang tot het globale feit web_url.

Werken met Ansible Group Facts:

In deze sectie laat ik je zien hoe je Ansible-groepsfeiten/-variabelen in je inventarisbestand definieert en ze opent vanuit je Ansible-playbooks. Ik zal je ook laten zien hoe je groepsfeiten/variabelen definieert in een apart bestand.

Open eerst de van de gastheer inventarisbestand met het volgende commando:

$ nano-hosts

Als je een gastgroep hebt groep 1, dan voeg je groepsfeiten/variabelen toe voor die hostgroep in a groep1:vars gedeelte van uw inventarisbestand.

[groep 1]

[groep1:vars]
variabele1=waarde1
variabele2=waarde2

Om bijvoorbeeld de groepsfeiten/variabelen toe te voegen domeinnaam en database_backends voor de web hostgroep, u kunt de gemarkeerde regels in uw inventarisbestand typen.

Als u klaar bent, drukt u op + X gevolgd door Y en om het inventarisbestand op te slaan.

Maak een nieuw playbook om af te drukken en te testen of we toegang hebben tot de groepsfeiten print_group_facts.yaml in de draaiboeken/ map als volgt:

$ nano playbooks/print_group_facts.yaml

Typ de volgende regels in je print_group_facts.yaml het dossier.

- hosts: web
gebruiker: ansible
taken:
- naam: Groepsfeiten afdrukken
debuggen:
msg: 'Domeinnaam: domain_name Database-backend: database_backend'

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden print_group_facts.yaml het dossier.

Voer nu de print_group_facts.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_group_facts.yaml

Zoals je kunt zien, zijn de gastheren in de web groep heeft toegang tot de domeinnaam en database_backend feiten/variabelen groeperen.

Laten we nu het inventarisbestand opschonen en kijken hoe we groepsfeiten/variabelen in een apart bestand kunnen toevoegen.

Open eerst de van de gastheer inventarisbestand als volgt:

$ nano feiten

Verwijder de gemarkeerde lijnen van de van de gastheer inventarisbestand. Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden gastheren inventarisbestand.

Omdat we groepsvariabelen toevoegen voor de web hostgroep, maak een nieuw bestand aan web (zelfde als de groepsnaam) in de group_vars/ map als volgt:

$ nano group_vars/web

Om de groepsfeiten toe te voegen domeinnaam en database_backend voor de web hostgroep, voeg de volgende regels toe in de group_vars/web het dossier.

domein_naam: web.linuxhint.com
database_backend: pgsql

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden group_vars/web het dossier.

Om te controleren of de hosts in de web groep heeft toegang tot de groepsfeiten, voer de print_group_facts.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_group_facts.yaml

Zoals je kunt zien, zijn de gastheren in de web groep heeft toegang tot de domeinnaam en database_backend feiten/variabelen groeperen.

Werken met Ansible Host Feiten:

In deze sectie laat ik je zien hoe je Ansible-hostfeiten/-variabelen in je inventarisbestand definieert en deze opent vanuit je Ansible-playbooks. Ik zal je ook laten zien hoe je hostfeiten/variabelen definieert in een apart bestand.

Open eerst de van de gastheer inventarisbestand met het volgende commando:

$ nano-hosts

U kunt als volgt hostfeiten/variabelen toevoegen achter de DNS-naam of het IP-adres van de host in uw inventarisbestand:

www.domein1.com      variabele1=waarde1       variabele2=waarde2
192.168.22.2         variabele1=waarde3       variabele2=waarde4

U kunt bijvoorbeeld hostfeiten/variabelen toevoegen domeinnaam en database_backend voor de gastheren vm3.nodekite.com en vm4.nodekite.com, zoals aangegeven in de onderstaande schermafbeelding.

Merk op dat de waarde van de domeinnaam en database_backend feiten/variabelen zijn verschillend voor elke host.

Als u klaar bent met het toevoegen van de hostfeiten/variabelen, drukt u op + X, gevolgd door Y en om de te redden van de gastheer inventarisbestand.

Aangezien ik dezelfde feiten/variabelen heb toegevoegd als in het voorbeeld van de feiten/variabelen van de groep, kunnen we de . gebruiken print_group_facts.yaml playbook om ook de toegankelijkheid van deze feiten/variabelen te testen.

Voer de ... uit print_group_facts.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_group_facts.yaml

Zoals u kunt zien, zijn de feiten/variabelen van de host toegankelijk voor hun opgegeven host. De waarden zijn ook verschillend voor elke host.

Aangezien elk van de hosts in een aparte regel in mijn inventarisbestand staat, kan ik gemakkelijk hostfeiten/variabelen toevoegen aan mijn inventarisbestand. Maar als u bereiken gebruikt om hosts in uw inventarisbestand te definiëren, zoals aangegeven in de onderstaande schermafbeelding, kunt u dergelijke hostfeiten/variabelen niet toevoegen.

U kunt hostfeiten/variabelen in een apart bestand toevoegen, net zoals u heeft gedaan voor de globale en groepsfeiten/variabelen.

Om hostfeiten/variabelen toe te voegen voor de vm5.nodekite.com host, maak een nieuw bestand aan vm5.nodekite.com (hetzelfde als de host-DNS-naam) in de host_vars/ map als volgt:

$ nano host_vars/vm5.nodekite.com

U kunt de hostfeiten/variabelen toevoegen db_port en db_name voor de gastheer vm5.nodekite.com met de volgende regels:.

db_port: 3306
db_name: demo1

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden vm5.nodekite.com het dossier.

Op dezelfde manier, om hostfeiten/variabelen voor de host toe te voegen vm6.nodekite.com, maak een nieuw bestand aan vm6.nodekite.com in de host_vars/ map als volgt:

$ nano host_vars/vm6.nodekite.com

U kunt de hostfeiten/variabelen toevoegen db_port en db_name voor de gastheer vm6.nodekite.com met de volgende regels:.

db_port: 8877
db_name: app1

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden vm6.nodekite.com het dossier.

Maak een nieuw playbook om af te drukken en te testen of we toegang hebben tot de hostfeiten/variabelen print_host_facts.yaml in de draaiboeken/ map als volgt:

$ nano playbooks/print_host_facts.yaml

Typ nu de volgende regels in de print_host_facts.yaml het dossier.

- hosts: database
gebruiker: ansible
taken:
- naam: Hostfeiten afdrukken
debuggen:
msg: 'Databasenaam: db_name Databasepoort: db_port'

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden print_host_facts.yaml het dossier.

Om te controleren of de host vm5.nodekite.com en vm6.nodekite.com kan toegang krijgen tot de hostfeiten/variabelen, voer de print_host_facts.yaml draaiboek als volgt:

$ ansible-playbook playbooks/print_host_facts.yaml

Zoals je kunt zien, zijn de gastheren vm5.nodekite.com en vm6.nodekite.com kan toegang krijgen tot de db_name en db_port host feiten/variabelen.

Alles bij elkaar: voorrang van Ansible Facts

In deze sectie ga ik het hebben over Ansible feit/variabele voorrang. Dus laten we beginnen.

Voordat we beginnen, laten we het inventarisbestand opschonen.

Open de van de gastheer inventarisbestand met het volgende commando:

$ nano-hosts

Verwijder het gemarkeerde gedeelte uit het inventarisbestand.

Zo zou je inventarisbestand er op dit moment uit moeten zien.

Voeg nu de gemarkeerde regel toe aan uw inventarisbestand. Deze regels voegen de globale feiten/variabelen toe fact_scope en haven.

Voeg vervolgens de gemarkeerde regels toe aan uw inventarisbestand. Deze regels voegen de toe fact_scope en haven feiten/variabelen voor de hosts in de database groep.

Voeg tot slot de fact_scope en haven host feiten/variabelen voor de vm3.nodekite.com en vm4.nodekite.com hosts, zoals aangegeven in de onderstaande schermafbeelding.

Als u klaar bent, drukt u op + X gevolgd door Y en om het inventarisbestand op te slaan.

Maak een nieuw playbook om de waarde van de globale, groeps- en hostfeiten/variabelen af ​​te drukken feit_precendence.yaml in de draaiboeken/ map als volgt:

$ nano playbooks/fact_precedence.yaml

Typ de volgende regels in de fact_precedence.yaml het dossier.

- hosts: alle
gebruiker: ansible
taken:
- naam: Print alle feiten
debuggen:
bericht: 'Fact Scope: fact_scope    Poort: port'

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden fact_precedence.yaml het dossier.

Om de globale, groeps- en hostfeiten/variabelen af ​​te drukken, voert u de fact_precedence.yaml draaiboek als volgt:

$ ansible-playbook playbooks/fact_precedence.yaml

Zoals u kunt zien, worden de globale, groeps- en hostfeiten/variabelen afgedrukt.

Merk op dat de groepsfeiten/variabelen de globale feiten/variabelen hebben vervangen (1). Merk ook op dat de hostfeiten/variabelen zowel de groeps- als de globale feiten/variabelen hebben vervangen (2).

Het feit/variabele voorrang van Ansible is als volgt:

Gastfeit > Groepsfeit > Globaal feit

Conclusie:

Na het lezen van dit artikel zou je comfortabel moeten kunnen werken met Ansible globale, groeps- en hostfeiten/variabelen. Onthoud de voorrang van Ansible op maat. Het zal u helpen uw Ansible-playbooks gemakkelijker te debuggen.

HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...