@@ -111,7 +111,7 @@ Un semplice esempio di condizione `when`:
tasks:
tasks:
- name:install postgres
- name:install postgres
yum:
apt:
name:postgresql
name:postgresql
state:latest
state:latest
when:ansible_distribution == 'Ubuntu'
when:ansible_distribution == 'Ubuntu'
@@ -127,7 +127,7 @@ Un esempio di `registered variables`:
tasks:
tasks:
- name:Install the httpd package
- name:Install the httpd package
yum:
apt:
name:httpd
name:httpd
state:present
state:present
register:httpd_installation
register:httpd_installation
@@ -139,7 +139,7 @@ Un esempio di `registered variables`:
when:httpd_installation.changed == true
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
## Loops
@@ -264,7 +264,7 @@ Gli `handler` in Ansible consentono l'esecuzione condizionale di specifiche oper
tasks:
tasks:
- name:install httpd
- name:install httpd
yum:
apt:
name:httpd
name:httpd
state:present
state:present
notify:
notify:
@@ -280,3 +280,108 @@ 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.
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.
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.
## Variabili
Le variabili sono utilizzate per memorizzare valori, seguendo la sintassi `key: value`.
Per fare riferimento a una variabile in Ansible, si utilizza la sintassi `Jinja2`, racchiudendo il nome della variabile tra le parentesi graffe doppie `{{ }}`. Ad esempio, se si definisce una variabile come `config_path: /opt/my_app/config`, il riferimento a questa variabile sarà `{{ config_path }}`.
Le variabili possono essere utilizzate in diversi contesti:
- Inventory
- Playbook: variabili definite direttamente nel playbook utilizzando la parola chiave `vars`
- Command line: variabili passate tramite la riga di comando utilizzando l'opzione `--extra-vars`
- File esterni: variabili definite in file esterni, richiamabili nel playbook con la parola chiave `vars_file`
```yaml
---
- name:Example playbook with variables
hosts:webservers
vars:
app_name:my_app
config_file_path:/etc/{{ app_name }}/config.yml
tasks:
- name:Copy the configuration file
copy:
src:files/config.yml
dest:"{{ config_file_path }}"
owner:root
group:root
mode:'0644'
```
### Registrazione del valore di una variabile
È possibile registrare il risultato di un task all’interno di una variabile, in modo da riutilizzarlo nei task successivi. Per fare ciò, si utilizza la parola chiave `register` all’interno del task:
```yaml
---
- name:playbook with variables
hosts:db
tasks:
- name:get uptime
shell:uptime
register:uptime
- debug:
var:uptime.stdout
```
In questo esempio, il task *get uptime* esegue il comando uptime e registra il risultato nella variabile *uptime*. Successivamente, il valore di *uptime.stdout* viene visualizzato utilizzando il modulo debug.
E' possibile registrare il valore delle vartiabili. E' quindi possibile salvare il risultato di un task all'interno di una variabile e riutilizzarla in task successibvi. Nel task, per fare questo, si deve utilizzare la parola chiave `register`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.