Legene, rollerne og opgaverne er den ansible struktur, og denne ansible struktur indeholder den vigtige egenskab, som kaldes tags i Ansible. Når vi starter en playbook i Ansible, kan du bruge kommandoerne -tags og -skip tags, så vi kun kan udføre en bestemt række opgaver, skuespil og roller. Hvis vi har en playbook, der indeholder så mange opgaver, men vi ikke ønsker at udføre alle opgaver i playbook, i stedet for at udføre hele playbook, vil vi bare køre et par opgaver ved at bruge tag-kommandoen i Ansible playbook.
Vi vil diskutere tags i dette emne, som fungerer som en af de vigtigste facetter af Ansible. Vi vil forsøge at forklare, hvad tags er, og hvordan tags fungerer i Ansible, fordi dette er en forvirrende funktion ved Ansible-platformen.
For eksempel kan en playbook indeholde tre ansvarsområder: at installere modulet, konfigurere det og kontrollere status for det implementerede modul, såsom om tjenesten kører og er tilgængelig. Da vi blot skal se modulernes tilstand på nogle få fjernmaskiner, bruger vi Ansible-tags i denne situation i stedet for at udføre alle opgaverne i playbook. Det giver os mulighed for udelukkende at køre en bestemt operation, hvilket giver os mulighed for at reducere køretiden ved at opbevare alle relaterede aktiviteter i en enkelt spillebog.
Forudsætninger for at bruge tags i Ansible Playbook
For at indsætte de praktiske eksempler i den mulige software skal vi opfylde følgende krav.
Der skal kræves en Ansible-kontrollerende server, så den kan foretage ændringer. For at bruge tag-parameteren i Ansible-software skal vi have de lokale værter til at kommunikere med dem. I dette tilfælde bruger vi den lokale vært under udførelsen som en målfjernserver. Vi vil oprette playbooks, udføre Ansible tag-kommandoer og overvåge resultaterne på fjernværter fra ansible-controllerenheden.
Vi vil sigte efter at anvende forskellige scenarier til at undersøge nogle få af Ansible-taggene, så den lærende let kan forstå begrebet tags i en Ansible-spillebog.
Eksempel 01: Adgang til en enkelt opgave i Ansible Playbook
Vi skal implementere i Ansible ved at levere flere opgaver i afspilningsbogen, og så får vi kun adgang til en enkelt opgave ved at bruge tags i den. For at gøre det, vil vi først oprette playbook ved at skrive følgende kommando:
[root@master ansible]# nano ansible_tags.yml
Efter oprettelse og lancering af ansible_tags.yml spillebogen. Nu vil vi begynde at skrive kommandoerne i afspilningsbogen. Først videregiver vi de angivne værter i 'værtsparameteren', som vi vil bruge 'localhost'. Derefter vil vi skrive 'false' værdien i 'gather_facts' parameteren, så vi ikke kan få den ekstra information om den lokale vært, når vi udfører playbook.
Derefter begynder vi at liste de aktiviteter under parameteren 'opgaver' én efter én, som vi ønsker at udføre. Vi vil afgøre, om dokumentet er der på den lokale værtsmaskine i den første proces. Hvis det er tilgængeligt, gemmer vi det i 'register'-parameteren, og så giver vi det unikke navn til tagget, så når vi udfører playbooken, vil det være nemt for os at få adgang til tagget. I den anden opgave vil vi gøre det samme, som vi har gjort i den første opgave, men tagget skal være unikt, og så vil vi bruge fejlfindingsmuligheden til at vise opgaven sammen med den relaterede besked.
- værter:- lokal vært
indsamle_fakta: falsk
opgaver:
- navn: Tjek filens eksistens x`
stat: sti=./host.yml
register: filEksisterer
tags: check_file
- fejlfinde:
msg: '{{ 'File exists' if fileExists.stat.exists else 'File not found' }}'
tags: check_file
- navn: Tjek om host.yml er tilgængelig for den nuværende bruger
shell: stat -c '%a' ./host.yml
register: accessPath
tags: check_access
- fejlfinde:
msg: '{{ 'Fil tilgængelig' if (accessPath.stdout|int) < 660 else 'Filen er ikke tilgængelig' }}'
tags: check_access
Nu vil vi gemme spillebogen og derefter lukke den. Vi ønsker at køre ansible_tags.yml playbook, så vi vil skrive følgende kommando i Ansible terminalen for at vise outputtet til brugerne.
[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_fileEfter at have kørt kommandoen ovenfor, får vi det ønskede output til gengæld. Som vist nedenfor udføres kun én opgave, og den vises i outputtet, som er 'tjek fileksistens'.
Eksempel 02: Ignorer bestemt tag i Ansible Playbook
Her er det andet eksempel på Ansible-tagget, hvor vi går til 'spring'-tagget. Det er op til dig, om du vil ignorere alle opgaverne, eller du vil ignorere en bestemt opgave i spillebogen i Ansible. Vi bruger eksempel 1-implementeringen, og så springer vi bare opgaven over ved blot at skrive nedenstående erklæring i Ansible-terminalen.
[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_fileFra kommandoen ovenfor har vi simpelthen ignoreret opgaven 'tjek fileksistens'. Nu vises kun en enkelt opgave i outputtet, som er 'fil tilgængelig' med grøn skrift.
Eksempel 03: Fortsæt altid med at køre opgaven i Ansible Playbook
Vi skal implementere det tredje eksempel baseret på Ansible-tagget. I dette eksempel vil vi bruge 'always'-tagget, hvilket betyder, at et bestemt tag altid vil køre i Ansible Playbook. For at starte afspilningsbogen skal du bruge følgende kommando:
[root@master ansible]# nano ansible_tags.ymlI afspilningsbogen har vi oprettet flere opgaver, der skal køres, men vi bestod 'altid'-tagget i den sidste opgave, som er 'slet adgangskoden fra inventaret'. Følgende er kommandoen implementeret i afspilningsbogen:
- værter: alleindsamle_fakta: falsk
opgaver:
- navn: Tjek filens eksistens
stat: sti=./host.yml
register: filEksisterer
delegate_to: localhost
tags: check_file
- fejlfinde:
msg: '{{ 'File exists' if fileExists.stat.exists else 'File not found' }}'
tags: check_file
- navn: Tjek om host.yml er tilgængelig for den nuværende bruger
shell: stat -c '%a' ./host.yml
register: accessPath
delegate_to: localhost
tags: check_access
- fejlfinde:
msg: '{{ 'Fil tilgængelig' if (accessPath.stdout|int) < 660 else 'Filen er ikke tilgængelig' }}'
tags: check_access
- navn: Slet adgangskode fra inventar
lineinfil:
sti: '{{inventory_file}}'
regexp: '\b{{vare}}.*\b'
tilstand: fraværende
delegate_to: localhost
blive: falsk
tags: altid
with_items:
- ansible_password
Derefter vil vi oprette inventarfilen for at bygge forbindelsen mellem controlleren og mål-fjernværten. Nedenfor er kommandoen:
[root@master ansible]# nano host.ymlHer er inventarfilen, der indeholder information relateret til 'Linux_host' i Ansible.
Alle:værter:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22
For at få det ønskede output, kører vi følgende kommando i Ansible-terminalen:
[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml
Konklusion
Tags i Ansible er blevet forklaret i denne artikel. Vi forstår nu funktionen af tags og de steder i Ansible, hvor vi vil anvende dem. For at hjælpe eleven med at forstå begrebet Ansible-tags har vi udviklet en række eksempler.