readmefix
This commit is contained in:
parent
3a1c5d02e8
commit
2e6f7cc2f0
97
README.md
97
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: Основной заголовок <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 позволяет легко обновлять содержимое сайтов без изменения конфигурационных файлов вручную.
|
Loading…
Reference in New Issue
Block a user