- Улучшена команда 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
276 lines
7.5 KiB
Markdown
276 lines
7.5 KiB
Markdown
# Управление ролями Ansible
|
||
|
||
Полное руководство по созданию, управлению и использованию ролей в универсальной лаборатории.
|
||
|
||
## Создание роли
|
||
|
||
### Интерактивное создание
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
make role playbook NAME=my-role
|
||
# Выберите: create
|
||
# Введите имя: deploy
|
||
```
|
||
|
||
**Создается файл:** `roles/my-role/playbooks/deploy.yml`
|
||
|
||
```yaml
|
||
---
|
||
# Playbook: deploy для роли my-role
|
||
# Автор: Сергей Антропов
|
||
# Сайт: https://devops.org.ru
|
||
|
||
- name: deploy
|
||
hosts: all
|
||
become: true
|
||
roles:
|
||
- role: my-role
|
||
```
|
||
|
||
### Список playbooks
|
||
|
||
```bash
|
||
make role playbook NAME=my-role
|
||
# Выберите: list
|
||
```
|
||
|
||
### Редактирование playbook
|
||
|
||
```bash
|
||
make role playbook NAME=my-role
|
||
# Выберите: edit
|
||
# Введите имя: deploy
|
||
```
|
||
|
||
### Запуск playbook
|
||
|
||
```bash
|
||
make role playbook NAME=my-role
|
||
# Выберите: run
|
||
# Введите имя: deploy
|
||
```
|
||
|
||
## Команды управления ролями
|
||
|
||
### Основные команды
|
||
|
||
```bash
|
||
# Список ролей
|
||
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
|
||
|
||
```bash
|
||
make role create NAME=nginx
|
||
# Описание: Nginx web server role
|
||
# Пакет: nginx
|
||
# Сервис: nginx
|
||
# Платформы: ubuntu,centos
|
||
# Теги: web,nginx,server
|
||
```
|
||
|
||
### Создание playbook для nginx
|
||
|
||
```bash
|
||
make role playbook NAME=nginx
|
||
# Выберите: create
|
||
# Имя: install
|
||
```
|
||
|
||
**Результат:** `roles/nginx/playbooks/install.yml`
|
||
|
||
### Запуск playbook
|
||
|
||
```bash
|
||
make role playbook NAME=nginx
|
||
# Выберите: run
|
||
# Имя: install
|
||
```
|
||
|
||
## Структура файлов роли
|
||
|
||
### tasks/main.yml
|
||
|
||
```yaml
|
||
---
|
||
# Основные задачи роли 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
|
||
|
||
```yaml
|
||
---
|
||
# Переменные по умолчанию для роли nginx
|
||
# Автор: Сергей Антропов
|
||
# Сайт: https://devops.org.ru
|
||
|
||
nginx_enabled: true
|
||
nginx_package: nginx
|
||
nginx_service: nginx
|
||
```
|
||
|
||
### meta/main.yml
|
||
|
||
```yaml
|
||
---
|
||
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
|
||
|
||
```yaml
|
||
---
|
||
- 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 |