Files
DevOpsLab/docs/roles.md
Sergey Antropoff 0eb717ad82 feat: Добавлена интерактивность и поддержка playbooks для ролей
- Улучшена команда make role create с интерактивным вводом
- Добавлена команда make role playbook для управления playbooks
- Создана папка playbooks/ в структуре роли
- Обновлена документация по работе с ролями

Новые возможности:
- Интерактивное создание роли с настройкой параметров
- Управление playbooks роли (create|list|edit|run)
- Автоматическое создание структуры с папкой playbooks
- Улучшенные метаданные роли с платформами и тегами

Интерактивные параметры при создании роли:
- Описание роли
- Основной пакет
- Сервис
- Платформы (ubuntu,centos,rhel)
- Теги для Ansible Galaxy

Команды playbooks:
- make role playbook NAME=my-role create - создать playbook
- make role playbook NAME=my-role list - список playbooks
- make role playbook NAME=my-role edit - редактировать playbook
- make role playbook NAME=my-role run - запустить playbook

Документация:
- Создан docs/roles.md с полным руководством
- Обновлен README.md с новыми командами
- Добавлены примеры использования

Преимущества:
- Полная интерактивность при создании ролей
- Удобное управление playbooks роли
- Автоматическая генерация структуры
- Подробная документация
- Интеграция с лабораторией

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-22 14:53:35 +03:00

7.5 KiB
Raw Blame History

Управление ролями Ansible

Полное руководство по созданию, управлению и использованию ролей в универсальной лаборатории.

Создание роли

Интерактивное создание

make role create NAME=my-role

Что происходит:

  1. Запрашивается описание роли - краткое описание функциональности
  2. Настраивается основной пакет - имя пакета для установки
  3. Настраивается сервис - имя сервиса для управления
  4. Выбираются платформы - поддерживаемые ОС (ubuntu, centos, rhel)
  5. Указываются теги - теги для Ansible Galaxy
  6. Создается структура роли с папкой playbooks/

Структура созданной роли

roles/my-role/
├── tasks/
│   └── main.yml          # Основные задачи
├── handlers/
│   └── main.yml          # Обработчики
├── templates/             # Шаблоны Jinja2
├── files/                 # Статические файлы
├── vars/
│   └── main.yml          # Переменные роли
├── defaults/
│   └── main.yml          # Переменные по умолчанию
├── meta/
│   └── main.yml          # Метаданные роли
├── tests/                 # Тесты роли
└── playbooks/            # Playbooks роли
    └── (создаются через make role playbook)

Управление playbooks роли

Создание playbook

make role playbook NAME=my-role
# Выберите: create
# Введите имя: deploy

Создается файл: roles/my-role/playbooks/deploy.yml

---
# Playbook: deploy для роли my-role
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru

- name: deploy
  hosts: all
  become: true
  roles:
    - role: my-role

Список playbooks

make role playbook NAME=my-role
# Выберите: list

Редактирование playbook

make role playbook NAME=my-role
# Выберите: edit
# Введите имя: deploy

Запуск playbook

make role playbook NAME=my-role
# Выберите: run
# Введите имя: deploy

Команды управления ролями

Основные команды

# Список ролей
make role list

# Создать роль (интерактивно)
make role create NAME=my-role

# Редактировать роль
make role edit NAME=my-role

# Тестировать роль
make role test NAME=my-role

# Проверить синтаксис
make role lint

# Развернуть роли
make role deploy

# Информация о роли
make role info NAME=my-role

# Управление playbooks
make role playbook NAME=my-role

Интерактивные возможности

При создании роли:

  • Описание роли - автоматически добавляется в README.md
  • Основной пакет - настраивается в defaults/main.yml
  • Сервис - настраивается в defaults/main.yml
  • Платформы - добавляются в meta/main.yml
  • Теги - добавляются в meta/main.yml

При работе с playbooks:

  • Создание - интерактивный ввод имени
  • Редактирование - выбор из списка существующих
  • Запуск - выбор playbook для выполнения

Примеры использования

Создание роли nginx

make role create NAME=nginx
# Описание: Nginx web server role
# Пакет: nginx
# Сервис: nginx
# Платформы: ubuntu,centos
# Теги: web,nginx,server

Создание playbook для nginx

make role playbook NAME=nginx
# Выберите: create
# Имя: install

Результат: roles/nginx/playbooks/install.yml

Запуск playbook

make role playbook NAME=nginx
# Выберите: run
# Имя: install

Структура файлов роли

tasks/main.yml

---
# Основные задачи роли nginx
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru

- name: nginx placeholder
  debug:
    msg: "Роль nginx готова для настройки"

- name: Install nginx package
  package:
    name: "{{ nginx_package | default('nginx') }}"
    state: present

- name: Start nginx service
  systemd:
    name: "{{ nginx_service | default('nginx') }}"
    state: started
    enabled: true
  when: nginx_service is defined

defaults/main.yml

---
# Переменные по умолчанию для роли nginx
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru

nginx_enabled: true
nginx_package: nginx
nginx_service: nginx

meta/main.yml

---
galaxy_info:
  author: Сергей Антропов
  description: Nginx web server role
  company: https://devops.org.ru
  license: MIT
  min_ansible_version: 2.9
  platforms:
    - name: Ubuntu
      versions: [focal, jammy]
    - name: CentOS
      versions: [7, 8, 9]
    - name: RHEL
      versions: [7, 8, 9]
  galaxy_tags: [web,nginx,server]
dependencies: []

Лучшие практики

1. Структура роли

  • Используйте tasks/main.yml для основных задач
  • Создавайте отдельные файлы для сложных задач
  • Используйте handlers для перезапуска сервисов
  • Храните шаблоны в templates/
  • Храните статические файлы в files/

2. Переменные

  • defaults/main.yml - значения по умолчанию
  • vars/main.yml - внутренние переменные роли
  • Используйте префиксы для переменных роли

3. Playbooks

  • Создавайте отдельные playbooks для разных сценариев
  • Используйте переменные для настройки
  • Добавляйте проверки и валидацию

4. Тестирование

  • Используйте make role test для проверки
  • Создавайте тесты в папке tests/
  • Проверяйте разные платформы

Интеграция с лабораторией

Автоматическое добавление в систему

При создании роли через make role create:

  1. Роль автоматически добавляется в deploy/tasks/main.yml
  2. Создается переменная {role_name}_enabled: true
  3. Обновляется site.yml с новой ролью

Использование в playbooks

---
- name: Deploy my-role
  hosts: all
  become: true
  roles:
    - role: my-role
      vars:
        my_role_enabled: true
        my_role_package: custom-package

Автор

Сергей Антропов
Сайт: https://devops.org.ru