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), който е входната точка за тази част от ролята.