feat: Реорганизация проекта и восстановление ролей
- Восстановлены команды 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
This commit is contained in:
123
ci-cd/README.md
Normal file
123
ci-cd/README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user