coursework/README.md
2024-11-13 00:25:04 +03:00

97 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: Основной заголовок <h1> на странице SiteA.
o site_h2: Дополнительный заголовок <h2> для SiteA.
o site_p: Параграф <p> контента для SiteA.
o site_domain: Доменное имя SiteA.
o site_ip: IP-адрес сервера SiteA.
• siteB:
o site_title: Заголовок страницы SiteB.
o site_h1: Основной заголовок <h1> на странице SiteB.
o site_h2: Дополнительный заголовок <h2> для SiteB.
o site_p: Параграф <p> контента для SiteB.
o site_domain: Доменное имя SiteB.
o site_ip: IP-адрес сервера SiteB.
• proxy:
o proxy_domain: Доменное имя прокси-сервера.
o proxy_ip: IP-адрес прокси-сервера.
В Jenkinsfile
• ADDITIONAL_CONTENT_SITEA_H2: Дополнительный контент для заголовка <h2> на SiteA.
• ADDITIONAL_CONTENT_SITEA_P: Дополнительный параграф <p> для SiteA.
• ADDITIONAL_CONTENT_SITEB_H2: Дополнительный контент для заголовка <h2> на SiteB.
• ADDITIONAL_CONTENT_SITEB_P: Дополнительный параграф <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 сертификата.
Как Использовать
1. Настройка Инвентаря: Отредактируйте inventory.yml, указав правильные IP-адреса и пользователя для каждого хоста.
2. Шифрование SSH Ключей: Используйте Ansible Vault для шифрования приватных SSH ключей и сохраните их в безопасном месте.
3. Настройка Jenkins:
o Добавьте необходимые креденшелы (пароли, SSH ключи) в Jenkins.
o Убедитесь, что Jenkins имеет доступ к Ansible и может выполнять playbook.
4. Запуск Pipeline:
o Введите необходимый контент для каждого сайта в соответствующие поля Jenkins.
o Запустите Jenkins Pipeline и следите за его выполнением.
5. Мониторинг и Проверка:
o Проверьте доступность сайтов и корректность балансировки нагрузки через прокси-сервер.
o Убедитесь, что health checks работают корректно и автоматически перенаправляют трафик при сбоях.
Дополнительная Информация
• Автоматизация Health Check: Конфигурация Nginx прокси-сервера настроена для автоматического перенаправления трафика на рабочие бэкенды без необходимости ручной перезагрузки.
• Динамическое Обновление Контента: Использование параметров в Jenkins позволяет легко обновлять содержимое сайтов без изменения конфигурационных файлов вручную.