Files
learning/ansible/005-roles.md
2025-09-07 21:05:48 +02:00

41 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Roles
I playbook possono diventare complessi quando sono responsabili della configurazione di numerosi sistemi diversi, ciascuno con più attività da gestire. Per affrontare questa complessità, Ansible offre la possibilità di organizzare le attività in una struttura di directory denominata `roles`.
In questa configurazione, i playbook richiamano i ruoli anziché i singoli task. Questo approccio consente di raggruppare le attività in unità logiche, facilitando il riutilizzo dei ruoli in altri playbook.
```yaml
---
# Tools for terminal
- name: TERMINAL - Kitty, Tmux, Fish
ansible.builtin.apt:
pkg:
- kitty
- tmux
- fish
state: present
```
## Inclusione di un ruolo in un playbook
Per utilizzare un ruolo allinterno di un playbook, è necessario richiamarlo tramite la keyword `roles`, seguita dallelenco dei ruoli da eseguire:
```yaml
- hosts: server
roles:
- test-role
```
## Struttura
Il comando per la creazione di un ruolo è `ansible-galaxy init test-role`. Questo comando non solo consente di inizializzare un nuovo ruolo, ma offre anche la possibilità di cercare e installare ruoli definiti da altri utenti disponibili online.
Al termine dellesecuzione del comando, viene generata una directory denominata come il ruolo stesso, con la seguente struttura:
- `Tasks`: la directory Tasks contiene l'elenco dei task eseguiti dal ruolo, specificati nel file `main.yml`
- `Handlers`: raccoglie gli handlers che possono essere utilizzati all'interno di questo ruolo. Si tratta di task speciali che vengono eseguiti solo quando sono stati notificati da altri task
- `Defaults`: include le variabili predefinite utilizzate allinterno del ruolo
- `Vars`: contiene ulteriori variabili
- `Files`: memorizza i file che devono essere distribuiti sui vari host nel corso dellesecuzione del ruolo
- `Meta`: conserva i metadati relativi al ruolo