GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare i tag in Ansible Playbook (esempi)

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


Linux
  1. Come utilizzo Ansible e anacron per l'automazione

  2. Come utilizzare il comando IP in Linux con esempi

  3. Come utilizzare il comando ethtool con esempi

  4. Come creare un Playbook Ansible

  5. Come passare variabili extra a un playbook Ansible

Come utilizzare il comando Grep in Linux + utili esempi di Grep

Come utilizzare il comando Dig in Linux (10 esempi)

Come utilizzare il comando Linux rm con esempi

Come definire e utilizzare i gestori in Ansible Playbook

Come usare Ansible per configurare Vim

Come utilizzare Ansible per inviare un'e-mail utilizzando Gmail