Sobes.tech
Junior

Iš ko sudaryta rolė, kokios aplankai ir failai ją sudaro?

sobes.tech AI

Atsakymas iš AI

Ansible rolė sudaryta iš direktorijų ir failų rinkinio, kurie apibrėžia užduotis, kintamuosius, šablonus, failus, apdorotojus ir metaduomenis, skirtus vykdyti tam tikrą funkciją valdomuose mazguose.

Pagrindinė rolės struktūra:

  • defaults/: Numatyti kintamųjų reikšmės rolėje.
  • vars/: Specifiniai kintamieji rolėje, kurie perrašo defaults/ reikšmes.
  • tasks/: Pagrindinės užduotys, kurias atlieka rolė. Failas main.yml yra privalomas.
  • handlers/: Apdorotojai, kurie paleidžiami tam tikrais įvykiais (pvz., paslaugos perkrovimas). Failas main.yml yra privalomas.
  • files/: Failai, kurie bus nukopijuoti į valdomus mazgus.
  • templates/: Jinja2 šablonai, kurie bus nukopijuoti į valdomus mazgus po apdorojimo.
  • meta/: Rolės informacija: priklausomybės, autorius, licencija. Failas main.yml yra privalomas.
  • library/: Naudotojo moduliai.
  • module_utils/: Naudotojo įrankiai.
  • lookup_plugins/: Lookup plaginai.
  • filter_plugins/: Filtrų plaginai.

Pavyzdys tasks/main.yml failo turinio:

# tasks/main.yml
- name: Instaliuoti Nginx žiniatinklio serverį
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Nukopijuoti Nginx konfigūracijos failą
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Perkrauti Nginx

handlers/main.yml pavyzdys:

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

templates/nginx.conf.j2 šablono pavyzdys:

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

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

defaults/main.yml failo pavyzdys:

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

meta/main.yml turinys:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Rolė Nginx įdiegimui ir konfigūravimui
  license: MIT

  min_ansible_version: 2.9

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

  galaxy_tags: []

dependencies: []

Kiekvienas direktorijos, išskyrus library ir module_utils, turi būti su failu main.yml (arba main.yaml), kuris yra šios rolės įėjimo taškas.