Sobes.tech
Junior

Z čoho sa skladá úloha, aké priečinky a súbory ju tvoria?

sobes.tech AI

Odpoveď od AI

Rola Ansible pozostáva zo súborov a adresárov, ktoré definujú úlohy, premenné, šablóny, súbory, spracovateľov a metadáta na vykonanie určitej funkcie na spravovaných uzloch.

Hlavná štruktúra adresárov role:

  • defaults/: Predvolené hodnoty premenných pre rolu.
  • vars/: Špecifické premenné pre rolu. Prepisujú hodnoty z defaults/.
  • tasks/: Hlavné úlohy vykonávané rolou. Súbor main.yml je povinný.
  • handlers/: Spracovatelia spúšťaní pri určitých udalostiach (napríklad reštart služby). Súbor main.yml je povinný.
  • files/: Súbory, ktoré budú skopírované na spravované uzly.
  • templates/: Šablóny Jinja2, ktoré budú skopírované na spravované uzly po spracovaní.
  • meta/: Informácie o roli: závislosti, autor, licencia. Súbor main.yml je povinný.
  • library/: Používateľské moduly.
  • module_utils/: Utility pre používateľské moduly.
  • lookup_plugins/: Pluginy pre lookup.
  • filter_plugins/: Pluginy pre filtre.

Príklad obsahu súboru tasks/main.yml:

# tasks/main.yml
- name: Nainštalovať webový server Nginx
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Skopírovať konfiguračný súbor Nginx
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Reštartovať Nginx

Príklad obsahu súboru handlers/main.yml:

# handlers/main.yml
- name: Reštartovať Nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

Príklad obsahu súboru templates/nginx.conf.j2:

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

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

Príklad obsahu súboru defaults/main.yml:

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

Súbor meta/main.yml obsahuje metadáta o roli:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Rola na inštaláciu a konfiguráciu Nginx.
  license: MIT

  min_ansible_version: 2.9

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

  galaxy_tags: []

dependencies: []

Každý adresár, okrem library a module_utils, by mal obsahovať súbor main.yml (alebo main.yaml), ktorý je vstupnou bodkou pre túto časť role.