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