- Восстановлены команды 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 registry
- CI_REGISTRY_PASSWORD- пароль Docker registry
- SSH_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