Compare commits

...

2 Commits

Author SHA1 Message Date
dado
8b28f66c6d variabili 2025-09-03 21:11:12 +02:00
dado
f6a1c6e5f5 tags 2025-09-02 20:52:10 +02:00
2 changed files with 109 additions and 5 deletions

View File

@@ -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,108 @@ Gli `handler` in Ansible consentono l'esecuzione condizionale di specifiche oper
La parola chiave `notify` serve a richiamare lhandler specificato. Durante la prima esecuzione, una volta installato il software httpd, lhandler 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 lhandler 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, questultimo 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 nellesempio 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 lopzione `--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 allinterno di una variabile, in modo da riutilizzarlo nei task successivi. Per fare ciò, si utilizza la parola chiave `register` allinterno 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`.

View File

@@ -62,4 +62,3 @@ Ogni VM esegue un sistema operativo completo, con il proprio kernel, librerie e
Richiedono un hypervisor per gestire l'allocazione delle risorse hardware.
![container_vs_vm](/asset/image/container_vs_vm.png)