From 2e6f7cc2f0caae233dddb63d8b8ccf9fb7ce7826 Mon Sep 17 00:00:00 2001 From: reqwizz Date: Wed, 13 Nov 2024 00:25:04 +0300 Subject: [PATCH] readmefix --- README.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/README.md b/README.md index e69de29..f4199b5 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,97 @@ +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 сертификата. +Как Использовать +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 позволяет легко обновлять содержимое сайтов без изменения конфигурационных файлов вручную. \ No newline at end of file