Sobes.tech
Junior

Рөл қандай құрамда тұрады, оны қандай қалталар мен файлдар құрайды?

sobes.tech AI

AI-дан жауап

Ansible рөлі — бұл тапсырмаларды, айнымалыларды, шаблондарды, файлдарды, өңдеушілерді және метадеректерді анықтайтын директорийлер мен файлдардың жиынтығы, олар басқарылатын түйіндерде нақты функцияны орындау үшін пайдаланылады.

Рөлдің негізгі директорий құрылымы:

  • defaults/: Роль үшін әдепкі айнымалылар мәндері.
  • vars/: Рольға тән айнымалылар. defaults/ мәндерін қайта анықтайды.
  • tasks/: Роль орындайтын негізгі тапсырмалар. main.yml файлы міндетті.
  • handlers/: Белгілі оқиғалар кезінде іске қосылатын өңдеушілер (мысалы, қызметті қайта іске қосу). main.yml файлы міндетті.
  • files/: Басқарылатын түйіндерге көшірілетін файлдар.
  • templates/: Басқарылатын түйіндерге өңделгеннен кейін көшірілетін Jinja2 шаблон файлдары.
  • meta/: Роль туралы ақпарат: тәуелділіктер, автор, лицензия. main.yml файлы міндетті.
  • library/: Пайдаланушы модульдері.
  • module_utils/: Пайдаланушы модульдеріне арналған утилиталар.
  • lookup_plugins/: Lookup үшін плагиндер.
  • filter_plugins/: Фильтрлер үшін плагиндер.

tasks/main.yml файлының мысалы:

# tasks/main.yml
- name: Nginx веб-серверін орнату
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Nginx конфигурациялық файлын көшіру
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Nginx-ті қайта іске қосу

handlers/main.yml файлының мысалы:

# handlers/main.yml
- name: Nginx-ті қайта іске қосу
  ansible.builtin.service:
    name: nginx
    state: restarted

templates/nginx.conf.j2 файлының мысалы:

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

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

defaults/main.yml файлының мысалы:

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

meta/main.yml файлы туралы мәлімет:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Nginx орнату және конфигурациялау үшін рөл.
  license: MIT

  min_ansible_version: 2.9

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

  galaxy_tags: []

dependencies: []

Әрбір директорий, library және module_utils-дан басқа, осы бөлімнің кіріс нүктесі болып табылатын main.yml (немесе main.yaml) файлын қамтуы керек.