- Восстановлены команды make role в Makefile - Создана папка ci-cd/ для CI/CD конфигурации - Перенесены GitLab файлы в ci-cd/ - Перенесены Dockerfile'ы в ci-cd/dockerfiles/ - Удален корневой requirements.yml - Удалена пустая папка vars/ - Создана документация ci-cd/README.md - Обновлен README.md с информацией о CI/CD Изменения: - Восстановлены команды: make role list|create|edit|test|lint|deploy|info - Создана структура ci-cd/ с GitLab CI/CD - Перенесены Dockerfile'ы для разных ОС - Добавлена документация по CI/CD - Обновлена структура проекта в README.md Новая структура: - ci-cd/ - CI/CD конфигурация - ci-cd/gitlab/ - GitLab Runner - ci-cd/dockerfiles/ - Dockerfile'ы - ci-cd/.gitlab-ci.yml - GitLab CI/CD - ci-cd/README.md - документация CI/CD Преимущества: - Организованная структура проекта - Восстановлена функциональность ролей - Готовые примеры CI/CD - Документация по настройке - Разделение ответственности Автор: Сергей Антропов Сайт: https://devops.org.ru
124 lines
4.1 KiB
Markdown
124 lines
4.1 KiB
Markdown
# CI/CD для Ansible ролей
|
||
|
||
Этот раздел содержит примеры настройки CI/CD для Ansible ролей с использованием GitLab CI/CD.
|
||
|
||
## Структура
|
||
|
||
```
|
||
ci-cd/
|
||
├── README.md # Эта документация
|
||
├── .gitlab-ci.yml # GitLab CI/CD конфигурация
|
||
├── gitlab/ # GitLab Runner конфигурация
|
||
│ ├── config.json # Docker registry конфигурация
|
||
│ ├── docker-compose.yaml # GitLab Runner в Docker
|
||
│ └── runner/
|
||
│ └── config.toml # Runner конфигурация
|
||
└── dockerfiles/ # Dockerfile'ы для разных ОС
|
||
├── Dockerfile # Базовый Dockerfile
|
||
├── Dockerfile-CentOS # Dockerfile для CentOS
|
||
└── Dockerfile-Ubuntu # Dockerfile для Ubuntu
|
||
```
|
||
|
||
## GitLab CI/CD
|
||
|
||
### Основные этапы
|
||
|
||
1. **Lint** - проверка синтаксиса Ansible
|
||
2. **Test** - запуск тестов через Molecule
|
||
3. **Deploy** - развертывание в продакшн
|
||
4. **Notify** - уведомления о результатах
|
||
|
||
### Настройка
|
||
|
||
1. **Переменные окружения:**
|
||
- `CI_REGISTRY_USER` - пользователь Docker registry
|
||
- `CI_REGISTRY_PASSWORD` - пароль Docker registry
|
||
- `SSH_PRIVATE_KEY` - SSH ключ для доступа к серверам
|
||
- `TELEGRAM_BOT_TOKEN` - токен Telegram бота
|
||
- `TELEGRAM_CHAT_ID` - ID чата для уведомлений
|
||
|
||
2. **Docker Registry:**
|
||
- Настроен доступ к `hub.cism-ms.ru`
|
||
- Используется образ `hub.cism-ms.ru/ansible/ansible:latest`
|
||
|
||
3. **Vault:**
|
||
- Автоматическое расшифрование/шифрование секретов
|
||
- Используется `vault-password.txt` для доступа
|
||
|
||
## GitLab Runner
|
||
|
||
### Конфигурация
|
||
|
||
- **Executor:** Docker
|
||
- **Image:** `hub.cism-ms.ru/ansible/ansible:latest`
|
||
- **Privileged:** true
|
||
- **Volumes:** Docker socket для DinD
|
||
|
||
### Настройка Runner
|
||
|
||
1. Зарегистрировать Runner:
|
||
```bash
|
||
docker-compose -f ci-cd/gitlab/docker-compose.yaml up -d
|
||
```
|
||
|
||
2. Настроить переменные в `ci-cd/gitlab/runner/config.toml`
|
||
|
||
## Dockerfile'ы
|
||
|
||
### Базовый Dockerfile
|
||
- Основан на Ubuntu
|
||
- Установлены Ansible, Molecule, Docker
|
||
- Настроен systemd для тестирования
|
||
|
||
### Dockerfile-CentOS
|
||
- Основан на CentOS
|
||
- Адаптирован для RHEL-семейства
|
||
- Установлены необходимые пакеты
|
||
|
||
### Dockerfile-Ubuntu
|
||
- Основан на Ubuntu
|
||
- Оптимизирован для Debian-семейства
|
||
- Включены дополнительные инструменты
|
||
|
||
## Использование
|
||
|
||
### Локальная разработка
|
||
|
||
```bash
|
||
# Создать роль
|
||
make role create NAME=my-role
|
||
|
||
# Тестировать роль
|
||
make role test NAME=my-role
|
||
|
||
# Проверить синтаксис
|
||
make role lint
|
||
```
|
||
|
||
### CI/CD Pipeline
|
||
|
||
1. **Автоматический запуск** при push в ветки
|
||
2. **Lint проверка** всех ролей
|
||
3. **Molecule тесты** для каждой роли
|
||
4. **Deploy** в продакшн (ручной запуск)
|
||
5. **Уведомления** в Telegram
|
||
|
||
### Настройка для своего проекта
|
||
|
||
1. Скопировать `.gitlab-ci.yml` в корень проекта
|
||
2. Настроить переменные в GitLab
|
||
3. Обновить Docker registry URL
|
||
4. Настроить SSH ключи для деплоя
|
||
|
||
## Безопасность
|
||
|
||
- Все секреты хранятся в Ansible Vault
|
||
- SSH ключи используются только для деплоя
|
||
- Docker registry требует аутентификации
|
||
- Vault файлы автоматически шифруются после использования
|
||
|
||
## Автор
|
||
|
||
Сергей Антропов
|
||
Сайт: https://devops.org.ru
|