8.2 KiB
Ansible Jenkins Deployment Pipeline Обзор Этот репозиторий содержит проект Ansible, интегрированный с Jenkins, для автоматизации развёртывания двух веб-сайтов (SiteA и SiteB) и прокси-сервера (Proxy). Настройка обеспечивает балансировку нагрузки, автоматические проверки состояния (health checks) и динамическое обновление контента без ручного вмешательства. Структура Репозитория ansible/ ├── group_vars/ │ └── all.yml ├── roles/ │ ├── firewall/ │ │ ├── tasks/ │ │ └── vars/ │ ├── nginx_proxy/ │ │ ├── tasks/ │ │ ├── templates/ │ │ └── vars/ │ ├── nginx_site/ │ │ ├── tasks/ │ │ ├── templates/ │ │ └── vars/ │ └── ssl_certificate/ │ ├── tasks/ │ └── vars/ ├── playbook.yml ├── inventory.yml ├── ansible.cfg ├── id_ed25519_vault └── Jenkinsfile Описание Структуры • group_vars/: Содержит файлы с переменными групп хостов. В данном случае all.yml содержит общие переменные для всех ролей и хостов. • roles/: Основная директория с ролями Ansible. o firewall/: Роль для настройки и конфигурирования файрвола (firewalld), открытия необходимых портов. tasks/: Задачи для установки и настройки firewalld. vars/: Переменные, используемые в роли firewall. o nginx_proxy/: Роль для установки и настройки Nginx как прокси-сервера с балансировкой нагрузки и проверкой состояния. tasks/: Задачи для установки Nginx и деплоя конфигурации прокси. templates/: Шаблоны конфигурационных файлов Nginx для прокси-сервера. vars/: Переменные, используемые в роли nginx_proxy. o nginx_site/: Роль для установки и настройки Nginx на целевых сайтах (SiteA и SiteB), а также деплоя HTML контента. tasks/: Задачи для установки Nginx, создания корневых директорий сайтов, деплоя конфигураций и HTML файлов. templates/: Шаблоны конфигурационных файлов Nginx и HTML страниц для сайтов. vars/: Переменные, используемые в роли nginx_site. o ssl_certificate/: Роль для генерации самоподписанных SSL сертификатов для прокси-сервера. tasks/: Задачи для установки OpenSSL, создания директории для сертификатов и генерации самоподписанных сертификатов. vars/: Переменные, используемые в роли ssl_certificate. • playbook.yml: Основной Ansible playbook, который связывает все роли и определяет порядок их выполнения на соответствующих хостах. • inventory.yml: Файл инвентаризации, содержащий информацию о целевых хостах и группах (SiteA, SiteB, proxy). • ansible.cfg: Конфигурационный файл Ansible, определяющий пути к ролям и другие настройки. • Jenkinsfile: Скрипт для Jenkins Pipeline, который управляет процессом деплоя, включая расшифровку SSH ключей, передачу переменных и запуск Ansible playbook. Параметры и Их Назначение В group_vars/all.yml • siteA: o site_title: Заголовок страницы SiteA. o site_h1: Основной заголовок
на странице SiteA. o site_h2: Дополнительный заголовок
для SiteA. o site_p: Параграф
контента для SiteA. o site_domain: Доменное имя SiteA. o site_ip: IP-адрес сервера SiteA. • siteB: o site_title: Заголовок страницы SiteB. o site_h1: Основной заголовок
на странице SiteB. o site_h2: Дополнительный заголовок
для SiteB. o site_p: Параграф
контента для SiteB. o site_domain: Доменное имя SiteB. o site_ip: IP-адрес сервера SiteB. • proxy: o proxy_domain: Доменное имя прокси-сервера. o proxy_ip: IP-адрес прокси-сервера. В Jenkinsfile • ADDITIONAL_CONTENT_SITEA_H2: Дополнительный контент для заголовка
на SiteA. • ADDITIONAL_CONTENT_SITEA_P: Дополнительный параграф
для SiteA. • ADDITIONAL_CONTENT_SITEB_H2: Дополнительный контент для заголовка
на SiteB. • ADDITIONAL_CONTENT_SITEB_P: Дополнительный параграф
для SiteB. В Ролях • firewall/vars/main.yml: o firewall_ports: Список портов и протоколов, которые необходимо открыть в файрволе (например, SSH, HTTP, HTTPS). • nginx_proxy/vars/main.yml: o upstream_servers: Список IP-адресов бэкенд-серверов (SiteA и SiteB) для балансировки нагрузки. • ssl_certificate/vars/main.yml: o ssl_cert_path: Путь к директории, где будут храниться SSL сертификаты. o ssl_cert_file: Имя SSL сертификата. o ssl_key_file: Имя ключа SSL сертификата. o ssl_subject: Параметры для генерации самоподписанного SSL сертификата. Как Использовать
- Настройка Инвентаря: Отредактируйте inventory.yml, указав правильные IP-адреса и пользователя для каждого хоста.
- Шифрование SSH Ключей: Используйте Ansible Vault для шифрования приватных SSH ключей и сохраните их в безопасном месте.
- Настройка Jenkins: o Добавьте необходимые креденшелы (пароли, SSH ключи) в Jenkins. o Убедитесь, что Jenkins имеет доступ к Ansible и может выполнять playbook.
- Запуск Pipeline: o Введите необходимый контент для каждого сайта в соответствующие поля Jenkins. o Запустите Jenkins Pipeline и следите за его выполнением.
- Мониторинг и Проверка: o Проверьте доступность сайтов и корректность балансировки нагрузки через прокси-сервер. o Убедитесь, что health checks работают корректно и автоматически перенаправляют трафик при сбоях. Дополнительная Информация • Автоматизация Health Check: Конфигурация Nginx прокси-сервера настроена для автоматического перенаправления трафика на рабочие бэкенды без необходимости ручной перезагрузки. • Динамическое Обновление Контента: Использование параметров в Jenkins позволяет легко обновлять содержимое сайтов без изменения конфигурационных файлов вручную.