From f6a1c6e5f5067d0a573f036411fe3bc490ed16d8 Mon Sep 17 00:00:00 2001 From: dado Date: Tue, 2 Sep 2025 20:52:10 +0200 Subject: [PATCH] tags --- ansible/003-playbook.md | 60 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/ansible/003-playbook.md b/ansible/003-playbook.md index de11fa6..c604ccc 100644 --- a/ansible/003-playbook.md +++ b/ansible/003-playbook.md @@ -111,7 +111,7 @@ Un semplice esempio di condizione `when`: tasks: - name: install postgres - yum: + apt: name: postgresql state: latest when: ansible_distribution == 'Ubuntu' @@ -127,7 +127,7 @@ Un esempio di `registered variables`: tasks: - name: Install the httpd package - yum: + apt: name: httpd state: present register: httpd_installation @@ -139,7 +139,7 @@ Un esempio di `registered variables`: when: httpd_installation.changed == true ``` -Questo task utilizza il modulo yum per installare il pacchetto httpd. Durante l'esecuzione, il risultato dell'installazione viene registrato nella variabile `httpd_installation`. Avvia infine il servizio httpd, ma solo se l'installazione del pacchetto è stata completata con successo. +Questo task utilizza il modulo apt per installare il pacchetto httpd. Durante l'esecuzione, il risultato dell'installazione viene registrato nella variabile `httpd_installation`. Avvia infine il servizio httpd, ma solo se l'installazione del pacchetto è stata completata con successo. ## Loops @@ -264,7 +264,7 @@ Gli `handler` in Ansible consentono l'esecuzione condizionale di specifiche oper tasks: - name: install httpd - yum: + apt: name: httpd state: present notify: @@ -280,3 +280,55 @@ Gli `handler` in Ansible consentono l'esecuzione condizionale di specifiche oper La parola chiave `notify` serve a richiamare l’handler specificato. Durante la prima esecuzione, una volta installato il software httpd, l’handler verrà attivato e avvierà il servizio. Nelle esecuzioni successive, qualora il pacchetto sia già presente e non subisca modifiche, il task non verrà eseguito e, di conseguenza, neppure l’handler associato verrà richiamato. Per impostazione predefinita, gli handlers vengono eseguiti solo dopo che tutti i task del playbook sono stati completati. Questo significa che, anche se più task notificano lo stesso handler, quest’ultimo verrà eseguito una sola volta. + +## Tags + +I tag consentono di contrassegnare specifici task, offrendo la possibilità di selezionare quali parti eseguire di un playbook. + +Per aggiungere un tag a un task, è sufficiente utilizzare la direttiva `tags` seguita da un elenco di etichette. Ogni task può essere associato a uno o più tag, come illustrato nell’esempio seguente: + +```yaml +--- +- name: playbook with tags + hosts: db + become: true + + tasks: + - name: install httpd + apt: + name: httpd + state: present + tags: + - http + + - name: install postgres + apt: + name: postgresql + state: present + tags: + - db +``` + +In questo esempio, ogni task è associato a un tag specifico, rispettivamente http e db. In questo modo, è possibile eseguire solo i task contrassegnati da un determinato tag. + +### Tag speciali + +Ansible offre due tag speciali, `always` e `never`: un task contrassegnato con il tag *always* verrà sempre eseguito, indipendentemente dai tag specificati nella riga di comando. Al contrario, un task contrassegnato con il tag *never* non verrà mai eseguito, a meno che non venga esplicitamente richiesto tramite l’opzione `--tags`. + +### Esecuzione tramite riga di comando + +Utilizzando l'opzione `--tags`, è possibile specificare i task da eseguire: + +```bash +ansible-playbook playbook.yml --tags "http" +``` + +Questo comando eseguirà solo i task contrassegnati con il tag http. + +Al contrario, per escludere task specifici dall'esecuzione, si utilizza l'opzione `--skip-tags`: + +```bash +ansible-playbook playbook.yml --skip-tags "db" +``` + +Questo comando salterà l'esecuzione di tutti i task contrassegnati con il tag db.