- Восстановлены команды 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
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
Основные этапы
- Lint - проверка синтаксиса Ansible
- Test - запуск тестов через Molecule
- Deploy - развертывание в продакшн
- Notify - уведомления о результатах
Настройка
-
Переменные окружения:
CI_REGISTRY_USER- пользователь Docker registryCI_REGISTRY_PASSWORD- пароль Docker registrySSH_PRIVATE_KEY- SSH ключ для доступа к серверамTELEGRAM_BOT_TOKEN- токен Telegram ботаTELEGRAM_CHAT_ID- ID чата для уведомлений
-
Docker Registry:
- Настроен доступ к
hub.cism-ms.ru - Используется образ
hub.cism-ms.ru/ansible/ansible:latest
- Настроен доступ к
-
Vault:
- Автоматическое расшифрование/шифрование секретов
- Используется
vault-password.txtдля доступа
GitLab Runner
Конфигурация
- Executor: Docker
- Image:
hub.cism-ms.ru/ansible/ansible:latest - Privileged: true
- Volumes: Docker socket для DinD
Настройка Runner
- Зарегистрировать Runner:
docker-compose -f ci-cd/gitlab/docker-compose.yaml up -d
- Настроить переменные в
ci-cd/gitlab/runner/config.toml
Dockerfile'ы
Базовый Dockerfile
- Основан на Ubuntu
- Установлены Ansible, Molecule, Docker
- Настроен systemd для тестирования
Dockerfile-CentOS
- Основан на CentOS
- Адаптирован для RHEL-семейства
- Установлены необходимые пакеты
Dockerfile-Ubuntu
- Основан на Ubuntu
- Оптимизирован для Debian-семейства
- Включены дополнительные инструменты
Использование
Локальная разработка
# Создать роль
make role create NAME=my-role
# Тестировать роль
make role test NAME=my-role
# Проверить синтаксис
make role lint
CI/CD Pipeline
- Автоматический запуск при push в ветки
- Lint проверка всех ролей
- Molecule тесты для каждой роли
- Deploy в продакшн (ручной запуск)
- Уведомления в Telegram
Настройка для своего проекта
- Скопировать
.gitlab-ci.ymlв корень проекта - Настроить переменные в GitLab
- Обновить Docker registry URL
- Настроить SSH ключи для деплоя
Безопасность
- Все секреты хранятся в Ansible Vault
- SSH ключи используются только для деплоя
- Docker registry требует аутентификации
- Vault файлы автоматически шифруются после использования
Автор
Сергей Антропов
Сайт: https://devops.org.ru