- Восстановлены команды 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
		
			
				
	
	
		
			124 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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
 |