Sobes.tech
Junior

Waaruit bestaat de rol, welke mappen en bestanden vormen deze?

sobes.tech AI

Antwoord van AI

De rol van Ansible bestaat uit een set directories en bestanden die taken, variabelen, sjablonen, bestanden, handlers en metadata definiëren om een specifieke functie uit te voeren op beheerde knooppunten.

De hoofdstructuur van de rol:

  • defaults/: Standaardwaarden voor variabelen van de rol.
  • vars/: Rol-specifieke variabelen. Overschrijven de waarden uit defaults/.
  • tasks/: Belangrijkste taken die door de rol worden uitgevoerd. Het bestand main.yml is verplicht.
  • handlers/: Handlers die worden geactiveerd bij bepaalde gebeurtenissen (bijvoorbeeld het herstarten van een service). Het bestand main.yml is verplicht.
  • files/: Bestanden die worden gekopieerd naar de beheerde knooppunten.
  • templates/: Jinja2-sjabloonbestanden die na verwerking worden gekopieerd naar de beheerde knooppunten.
  • meta/: Informatie over de rol: afhankelijkheden, auteur, licentie. Het bestand main.yml is verplicht.
  • library/: Aangepaste modules.
  • module_utils/: Hulpmiddelen voor aangepaste modules.
  • lookup_plugins/: Plugins voor lookup.
  • filter_plugins/: Plugins voor filters.

Voorbeeld van de inhoud van het bestand tasks/main.yml:

# tasks/main.yml
- name: Installeer Nginx webserver
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Kopieer Nginx configuratiebestand
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Herstart Nginx

Voorbeeld van de inhoud van het bestand handlers/main.yml:

# handlers/main.yml
- name: Herstart Nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

Voorbeeld van de inhoud van het bestand templates/nginx.conf.j2:

# templates/nginx.conf.j2
server {
    listen {{ http_port }};
    server_name {{ server_name }};

    location / {
        proxy_pass http://localhost:{{ app_port }};
    }
}

Voorbeeld van de inhoud van het bestand defaults/main.yml:

# defaults/main.yml
http_port: 80
server_name: localhost
app_port: 8080

Het bestand meta/main.yml bevat metadata over de rol:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Een rol om Nginx te installeren en te configureren.
  license: MIT

  min_ansible_version: 2.9

  platforms:
  - name: Debian
    versions:
    - all
  - name: Ubuntu
    versions:
    - bionic

  galaxy_tags: []

dependencies: []

Elke directory, behalve library en module_utils, moet een bestand main.yml (of main.yaml) bevatten, dat het toegangspunt is voor dat deel van de rol.