Files
DevOpsLab/ci-cd/README.md
Sergey Antropoff d6bc3f1f31 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
2025-10-22 14:46:44 +03:00

4.1 KiB
Raw Permalink Blame History

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:
docker-compose -f ci-cd/gitlab/docker-compose.yaml up -d
  1. Настроить переменные в 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

  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