Sobes.tech
Junior

Miből áll a szerep, mely mappák és fájlok alkotják?

sobes.tech MI

Válasz az MI-től

Az Ansible szerepkör egy olyan könyvtárakból és fájlokból álló készlet, amelyek feladatokat, változókat, sablonokat, fájlokat, kezelőket és metaadatokat határoznak meg egy adott funkció végrehajtásához a kezelt csomópontokon.

A szerep fő könyvtárstruktúrája:

  • defaults/: Alapértelmezett értékek a szerep változóihoz.
  • vars/: Szerepspecifikus változók. Felülírják a defaults/ értékeit.
  • tasks/: A szerep által végrehajtott fő feladatok. A main.yml fájl kötelező.
  • handlers/: Kezelők, amelyek bizonyos események esetén aktiválódnak (pl. szolgáltatás újraindítása). A main.yml fájl kötelező.
  • files/: Fájlok, amelyeket a kezelt csomópontokra másolnak.
  • templates/: Jinja2 sablonfájlok, amelyeket feldolgozás után a csomópontokra másolnak.
  • meta/: Információk a szerepről: függőségek, szerző, licenc. A main.yml fájl kötelező.
  • library/: Egyedi modulok.
  • module_utils/: Segédprogramok egyedi modulokhoz.
  • lookup_plugins/: Kereső pluginok.
  • filter_plugins/: Szűrő pluginok.

A tasks/main.yml fájl példája:

# tasks/main.yml
- name: Nginx webszerver telepítése
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Nginx konfigurációs fájl másolása
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Nginx újraindítása

A handlers/main.yml fájl példája:

# handlers/main.yml
- name: Nginx újraindítása
  ansible.builtin.service:
    name: nginx
    state: restarted

A templates/nginx.conf.j2 fájl példája:

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

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

A defaults/main.yml fájl példája:

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

A meta/main.yml fájl példája:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Egy szerep az Nginx telepítéséhez és konfigurálásához.
  license: MIT

  min_ansible_version: 2.9

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

  galaxy_tags: []

dependencies: []

Minden könyvtárnak, kivéve a library és module_utils-t, tartalmaznia kell egy main.yml (vagy main.yaml) fájlt, amely az adott szerekrész belépési pontja.