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: 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 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. 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. 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. Richiedono un hypervisor per gestire l'allocazione delle risorse hardware.
![container_vs_vm](/asset/image/container_vs_vm.png) ![container_vs_vm](/asset/image/container_vs_vm.png)