# 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