Sobes.tech
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 di defaults/.
  • tasks/: Task principali eseguiti dal ruolo. Il file main.yml è obbligatorio.
  • handlers/: Handler attivati in eventi specifici (ad esempio, riavvio di un servizio). Il file main.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 file main.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.