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) файлын қамтуы керек.