- Улучшена команда 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
7.5 KiB
7.5 KiB
Управление ролями Ansible
Полное руководство по созданию, управлению и использованию ролей в универсальной лаборатории.
Создание роли
Интерактивное создание
make role create NAME=my-role
Что происходит:
- Запрашивается описание роли - краткое описание функциональности
- Настраивается основной пакет - имя пакета для установки
- Настраивается сервис - имя сервиса для управления
- Выбираются платформы - поддерживаемые ОС (ubuntu, centos, rhel)
- Указываются теги - теги для Ansible Galaxy
- Создается структура роли с папкой
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:
- Роль автоматически добавляется в
deploy/tasks/main.yml - Создается переменная
{role_name}_enabled: true - Обновляется
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