Назад к вопросам
Junior
77
questionbank
Из чего состоит роль, какие папки и файлы её составляют?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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: A role to install and configure 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), который является точкой входа для этой части роли.