A volte, potresti voler eseguire attività specifiche invece di eseguire un intero file di playbook. Questo aiuta a ridurre il tempo totale di esecuzione del playbook, soprattutto quando si ha a che fare con un file di playbook di grandi dimensioni.
Allora, cosa sono i tag?
I tag nei playbook sono frammenti di metadati allegati alle attività in un file del playbook. Sono indicati durante l'esecuzione di playbook e consentono di indirizzare selettivamente determinate attività in fase di esecuzione. Fondamentalmente, indica ad Ansible di eseguire (o non eseguire) attività specifiche all'interno del file del playbook.
Di solito, le attività saltate sono state eseguite e quindi non è necessario eseguirle nuovamente. In questo modo, i tag evitano la ripetizione e ottimizzano il tempo di esecuzione del playbook. Sono utili quando vuoi eseguire determinate attività su richiesta.
In questa guida analizzeremo i tag Ansible e dimostreremo come puoi allegare tag alle attività per determinare l'esecuzione del playbook.
Esegui un'attività specifica in un playbook
Prendiamo un esempio di un file di playbook che esegue tre attività come mostrato. I tag vengono specificati utilizzando l'etichetta dei tag alla fine di ogni attività.
--- - name: Ansible Tags example hosts: localhost gather_facts: False tasks: - name: Hello World tag example debug: msg: "Hello World!" tags: - hello - name: Welcome to Ansible Tags tag example debug: msg: "How are you?" tags: - welcome - name: Enjoy tag example debug: msg: "Enjoy!" tags: - enjoy
In questo playbook abbiamo tre tag:ciao, benvenuto e divertiti.
$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --list-tags
Come accennato in precedenza, puoi utilizzare i tag per controllare l'esecuzione dei playbook Ansible. Per specificare quale attività eseguire, utilizzare il flag -t o –tags.
Nel comando seguente, stiamo indicando ad Ansible di eseguire solo la prima attività che è stata contrassegnata come ciao.
$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --tags hello
Salta tag specifici in un Playbook
Puoi anche indicare ad Ansible di saltare tag specifici usando il flag –skip-tags. In tal modo, Ansible eseguirà il resto delle attività nel file Playbook ad eccezione dell'attività fornita.
In questo esempio, Ansible ignora l'ultima attività contrassegnata come divertimento ed esegue le altre attività definite nel playbook.
$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --skip-tags enjoy
Assicurati che un'attività venga sempre (o mai) eseguita
Anche se utilizzi i tag per determinare quali attività devono essere eseguite in un file di playbook, a volte ti accorgi che ci sono attività che devi eseguire. Prendi, ad esempio, un playbook che installa Apache sul server web remoto.
Il playbook ha 3 compiti. Per prima cosa aggiorna gli elenchi dei pacchetti sull'host remoto, installa Apache e lo riavvia. Tuttavia, prima di installare Apache, è necessario aggiornare gli elenchi dei pacchetti o aggiornare i repository.
Poiché l'aggiornamento dei repository è un prerequisito, taggheremo questa attività con il tag always.
--- - name: install Apache webserver hosts: webserver tasks: - name: Update and upgrade apt packages apt: update_cache: yes tags: - always - name: install Apache on Ubuntu apt: name: apache2 state: latest tags: - install_apache - name: Restart Apache Webserver service: name: apache2 state: restarted tags: - restart_apache
Senza alcun tag, il playbook funziona come previsto.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml
Se specifichiamo di eseguire un'attività specifica diversa da quella obbligatoria (che in questo caso è la prima attività) Ansible eseguirà anche l'attività che riporta il tag "sempre".
In questo esempio, abbiamo incaricato Ansible di riavviare Apache che contiene il tag "restart_apache". Tuttavia, l'attività "aggiorna repository apt" è ancora in esecuzione poiché ha il tag "sempre".
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache
Allo stesso modo, puoi dire ad Ansible di non eseguire mai un'attività e, per questo, utilizziamo il tag "mai". Questo è l'esatto opposto del tag "sempre".
Torna al nostro playbook. Supponiamo di non voler riavviare Apache dopo l'installazione. Per ottenere ciò, passa semplicemente il tag mai come mostrato.
- name: Restart Apache Webserver service: name: apache2 state: restarted tags: - restart_apache - never
Questo può anche essere contrassegnato come segue usando le doppie parentesi quadre:
tags: [ restart_apache, never ]
Quando il playbook viene eseguito senza alcun tag, l'attività verrà omessa.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml
Dall'output, puoi vedere che l'attività di riavvio di Apache è stata ignorata.
NOTA:
Un'attività contrassegnata come "mai" verrà comunque eseguita quando viene chiamata esplicitamente nel comando ansible-playbook. Ad esempio, l'attività che riavvia Apache verrà comunque eseguita poiché è stata definita in modo esplicito nel comando.
$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache
Conclusione
I tag Ansible sono utili e offrono la flessibilità necessaria per eseguire i playbook Ansible. Puoi eseguire o saltare l'esecuzione di attività specifiche in un playbook. Ciò fornisce un migliore controllo dei tuoi playbook durante il runtime del playbook.
Leggi anche :Come utilizzare Ansible Vault per proteggere i dati sensibili