Junior
Di cosa è composta la funzione, quali cartelle e file la costituiscono?
sobes.tech AI
Risposta dell'AI
Il ruolo di Ansible consiste in un insieme di directory e file che definiscono task, variabili, template, file, handler e metadati per eseguire una funzione specifica sui nodi gestiti.
Struttura principale della directory del ruolo:
defaults/: Valori predefiniti delle variabili del ruolo.vars/: Variabili specifiche del ruolo. Sovrascrivono i valori didefaults/.tasks/: Task principali eseguiti dal ruolo. Il filemain.ymlè obbligatorio.handlers/: Handler attivati in eventi specifici (ad esempio, riavvio di un servizio). Il filemain.ymlè obbligatorio.files/: File che saranno copiati sui nodi gestiti.templates/: File di template Jinja2 che saranno copiati sui nodi dopo l'elaborazione.meta/: Informazioni sul ruolo: dipendenze, autore, licenza. Il filemain.ymlè obbligatorio.library/: Moduli personalizzati.module_utils/: Utility per moduli personalizzati.lookup_plugins/: Plugin per lookup.filter_plugins/: Plugin per filtri.
Esempio di contenuto del file tasks/main.yml:
# tasks/main.yml
- name: Installa il server web Nginx
ansible.builtin.apt:
name: nginx
state: present
- name: Copia il file di configurazione di Nginx
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Riavvia Nginx
Esempio di contenuto del file handlers/main.yml:
# handlers/main.yml
- name: Riavvia Nginx
ansible.builtin.service:
name: nginx
state: restarted
Esempio di contenuto del file templates/nginx.conf.j2:
# templates/nginx.conf.j2
server {
listen {{ http_port }};
server_name {{ server_name }};
location / {
proxy_pass http://localhost:{{ app_port }};
}
}
Esempio di contenuto del file defaults/main.yml:
# defaults/main.yml
http_port: 80
server_name: localhost
app_port: 8080
Il file meta/main.yml contiene metadati sul ruolo:
# meta/main.yml
galaxy_info:
author: Your Name
description: Un ruolo per installare e configurare Nginx.
license: MIT
min_ansible_version: 2.9
platforms:
- name: Debian
versions:
- all
- name: Ubuntu
versions:
- bionic
galaxy_tags: []
dependencies: []
Ogni directory, tranne library e module_utils, deve contenere un file main.yml (o main.yaml), che rappresenta il punto di ingresso per questa parte del ruolo.