Tags gebruiken in Ansible

Tags Gebruiken In Ansible



De toneelstukken, rollen en taken zijn de weerwortstructuur en deze weerwortstructuur bevat het belangrijke attribuut dat tags wordt genoemd in Ansible. Telkens wanneer we een playbook in Ansible lanceren, kun je de opdrachten -tags en –tags overslaan gebruiken, zodat we alleen een bepaalde reeks taken, toneelstukken en rollen kunnen uitvoeren. Als we een playbook hebben dat zoveel taken bevat, maar we willen niet alle taken van het playbook uitvoeren, in plaats van het hele playbook uit te voeren, zullen we gewoon een paar taken uitvoeren met behulp van de tag-opdracht in het Ansible-playbook.

We gaan het in dit onderwerp hebben over tags, die dienen als een van de belangrijkste facetten van Ansible. We zullen proberen uit te leggen wat tags zijn en hoe tags werken in Ansible, omdat dit een verbijsterende functie is van het Ansible-platform.







Een draaiboek kan bijvoorbeeld drie verantwoordelijkheden bevatten: de module installeren, configureren en de status van de geïmplementeerde module controleren, bijvoorbeeld of de service actief en toegankelijk is. Omdat we alleen de status van de modules op een paar externe machines moeten zien, gebruiken we in deze situatie Ansible-tags in plaats van alle taken in het draaiboek uit te voeren. Het stelt ons in staat om een ​​bepaalde operatie exclusief uit te voeren, waardoor we de looptijd kunnen verkorten door alle gerelateerde activiteiten in één draaiboek te houden.



Vereisten voor het gebruik van de tags in Ansible Playbook

Voor het plaatsen van de praktijkvoorbeelden in de ansible software moeten we aan de volgende eisen voldoen.



Een Ansible-controlerende server moet vereist zijn, zodat deze wijzigingen kan aanbrengen. Om de tagparameter in Ansible-software te gebruiken, hebben we de lokale hosts nodig om met hen te communiceren. In dit geval gebruiken we de lokale host tijdens de uitvoering als een externe doelserver. We zullen draaiboeken maken, Ansible-tagopdrachten uitvoeren en de resultaten op externe hosts volgen vanaf het ansible-controller-apparaat.





We zullen proberen verschillende scenario's te gebruiken om enkele van de Ansible-tags te onderzoeken, zodat de leerling het concept van tags in een Ansible-playbook gemakkelijk kan begrijpen.

Voorbeeld 01: Toegang tot een enkele taak in Ansible Playbook

We gaan Ansible implementeren door meerdere taken in het draaiboek op te nemen en dan hebben we toegang tot slechts één taak door de tags erin te gebruiken. Om dit te doen, maken we eerst het draaiboek door de volgende opdracht te schrijven:



[root@master ansible]# nano ansible_tags.yml

Na het maken en starten van het ansible_tags.yml-playbook. Nu gaan we beginnen met het schrijven van de commando's in het draaiboek. Eerst geven we de opgegeven hosts door in de parameter 'hosts', die we 'localhost' zullen gebruiken. Vervolgens schrijven we de waarde 'false' in de parameter 'gather_facts', zodat we de extra informatie over de localhost niet kunnen krijgen wanneer we het draaiboek uitvoeren.

Daarna zullen we beginnen met het een voor een opsommen van de activiteiten onder de parameter 'taken' die we willen uitvoeren. We zullen tijdens het eerste proces bepalen of het document aanwezig is op de localhost-machine. Als het beschikbaar is, slaan we het op in de parameter 'register' en geven we vervolgens de unieke naam aan de tag, zodat wanneer we het draaiboek uitvoeren, het voor ons gemakkelijk is om toegang te krijgen tot de tag. In de tweede taak zullen we hetzelfde doen als in de eerste taak, maar de tag moet uniek zijn en dan zullen we de foutopsporingsoptie gebruiken om de taak samen met het gerelateerde bericht te laten zien.

- gastheren:

- localhost
collect_facts: onwaar


taken:
- naam: controleer of het bestand x` bestaat
stat: pad=./host.yml
register: bestandBestaat
tags: check_bestand


- debuggen:
msg: '{{ 'Bestand bestaat' als fileExists.stat.exists else 'Bestand niet gevonden' }}'
tags: check_bestand


- naam: Controleer of host.yml toegankelijk is voor de huidige gebruiker
shell: stat -c '%a' ./host.yml
registreren: toegangspad
tags: check_toegang


- debuggen:
msg: '{{ 'Bestand toegankelijk' if (accessPath.stdout|int) < 660 else 'Bestand is niet toegankelijk' }}'
tags: check_toegang

Nu gaan we het draaiboek opslaan en vervolgens sluiten. We willen het ansible_tags.yml-playbook uitvoeren, dus we zullen de volgende opdracht in de Ansible-terminal schrijven om de uitvoer aan de gebruikers te laten zien.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

Nadat we de bovenstaande opdracht hebben uitgevoerd, krijgen we de gewenste uitvoer terug. Zoals hieronder wordt getoond, wordt slechts één taak uitgevoerd en die wordt weergegeven in de uitvoer, namelijk 'controleer bestand bestaan'.

Voorbeeld 02: Negeer een bepaalde tag in Ansible Playbook

Hier is het tweede voorbeeld van de Ansible-tag waar we naar de 'skip' -tag gaan. Het is aan jou of je alle taken wilt negeren of dat je een bepaalde taak van het draaiboek in Ansible wilt negeren. We gebruiken de implementatie van voorbeeld 1 en dan slaan we de taak gewoon over door simpelweg de onderstaande verklaring in de Ansible-terminal te schrijven.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

Van de bovenstaande opdracht hebben we eenvoudigweg de taak 'bestand bestaan ​​controleren' genegeerd. Nu wordt slechts één enkele taak weergegeven in de uitvoer die 'bestandstoegankelijk' is in groen lettertype.

Voorbeeld 03: Blijf de taak altijd uitvoeren in Ansible Playbook

We gaan het derde voorbeeld implementeren op basis van de Ansible-tag. In dit voorbeeld gebruiken we de tag 'always', wat betekent dat een bepaalde tag altijd wordt uitgevoerd in het Ansible Playbook. Gebruik de volgende opdracht om het draaiboek te starten:

[root@master ansible]# nano ansible_tags.yml

In het draaiboek hebben we meerdere taken gemaakt om uit te voeren, maar we hebben de tag 'altijd' doorgegeven in de laatste taak, namelijk 'het wachtwoord uit de inventaris verwijderen'. Dit zijn de opdrachten die in het draaiboek zijn geïmplementeerd:

- gastheren: alle

collect_facts: onwaar


taken:
- naam: controleer of het bestand bestaat
stat: pad=./host.yml
register: bestandBestaat
delegeren_naar: localhost
tags: check_bestand


- debuggen:
msg: '{{ 'Bestand bestaat' als fileExists.stat.exists else 'Bestand niet gevonden' }}'
tags: check_bestand


- naam: Controleer of host.yml toegankelijk is voor de huidige gebruiker
shell: stat -c '%a' ./host.yml
registreren: toegangspad
delegeren_naar: localhost
tags: check_toegang


- debuggen:
msg: '{{ 'Bestand toegankelijk' if (accessPath.stdout|int) < 660 else 'Bestand is niet toegankelijk' }}'
tags: check_toegang


- naam: wachtwoord uit inventaris verwijderen
lineinfile:
pad: '{{inventory_file}}'
regexp: '\b{{item}}.*\b'
staat: afwezig
delegeren_naar: localhost
worden: vals
labels: altijd
met_items:
- ansible_password

Daarna maken we het inventarisbestand om de verbinding tussen de controller en de doelhost op afstand tot stand te brengen. Hieronder staat de opdracht:

[root@master ansible]# nanohost.yml

Hier is het inventarisbestand dat de informatie bevat met betrekking tot de 'Linux_host' in Ansible.

Alle:

gastheren:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: weerbaar
ansible_password: ******
ansible_connection: ssh
ansible_port: 22

Om de gewenste uitvoer te krijgen, voeren we de volgende opdracht uit in de Ansible-terminal:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Conclusie

Tags in Ansible zijn in dit artikel uitgelegd. We begrijpen nu de functie van tags en de plaatsen in Ansible waar we ze gaan toepassen. Om de leerling te helpen het concept van Ansible-tags te begrijpen, hebben we verschillende voorbeelden ontwikkeld.