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:
2025-10-22 14:46:44 +03:00
parent a875a874e9
commit d6bc3f1f31
17 changed files with 244 additions and 32 deletions

123
ci-cd/README.md Normal file
View 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