ansible | ||
.gitignore | ||
docker-compose.yml | ||
README.md |
Ansible Jenkins Deployment Pipeline
Обзор
Этот репозиторий содержит проект Ansible, интегрированный с Jenkins, для автоматизации развёртывания двух веб-сайтов (SiteA
и SiteB
) и прокси-сервера (Proxy
). Настройка обеспечивает балансировку нагрузки, автоматические проверки состояния (health checks) и динамическое обновление контента без ручного вмешательства.
Описание Структуры
-
group_vars/: Содержит файлы с переменными групп хостов. В данном случае
all.yml
содержит общие переменные для всех ролей и хостов. -
roles/: Основная директория с ролями Ansible.
-
firewall/: Роль для настройки и конфигурирования файрвола (
firewalld
), открытия необходимых портов.- tasks/: Задачи для установки и настройки
firewalld
. - vars/: Переменные, используемые в роли
firewall
.
- tasks/: Задачи для установки и настройки
-
nginx_proxy/: Роль для установки и настройки Nginx как прокси-сервера с балансировкой нагрузки и проверкой состояния.
- tasks/: Задачи для установки Nginx и деплоя конфигурации прокси.
- templates/: Шаблоны конфигурационных файлов Nginx для прокси-сервера.
-
nginx_site/: Роль для установки и настройки Nginx на целевых сайтах (
SiteA
иSiteB
), а также деплоя HTML контента.- tasks/: Задачи для установки Nginx, создания корневых директорий сайтов, деплоя конфигураций и HTML файлов.
- templates/: Шаблоны конфигурационных файлов Nginx и HTML страниц для сайтов.
-
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:
site_title
: Заголовок страницы SiteA.site_h1
: Основной заголовок<h1>
на странице SiteA.site_h2
: Дополнительный заголовок<h2>
для SiteA.site_p
: Параграф<p>
контента для SiteA.site_domain
: Доменное имя SiteA.site_ip
: IP-адрес сервера SiteA.
-
siteB:
site_title
: Заголовок страницы SiteB.site_h1
: Основной заголовок<h1>
на странице SiteB.site_h2
: Дополнительный заголовок<h2>
для SiteB.site_p
: Параграф<p>
контента для SiteB.site_domain
: Доменное имя SiteB.site_ip
: IP-адрес сервера SiteB.
-
proxy:
proxy_domain
: Доменное имя прокси-сервера.proxy_ip
: IP-адрес прокси-сервера.
-
ansible_python_interpreter: Явное указание пути к Python-интерпретатору на всех хостах.
В Jenkinsfile
- DEPLOY_TARGET: Выбор цели развертывания (
SiteA
,SiteB
,All
). - 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:
firewall_ports
: Список портов и протоколов, которые необходимо открыть в файрволе (например, SSH, HTTP, HTTPS).
-
nginx_proxy/vars/main.yml:
ssl_cert_path
: Путь к директории, где будут храниться SSL сертификаты.ssl_cert_file
: Имя SSL сертификата.ssl_key_file
: Имя ключа SSL сертификата.ssl_subject
: Параметры для генерации самоподписанного SSL сертификата.
Как Использовать
Настройка Инвентаря
Отредактируйте inventory.yml
, указав правильные IP-адреса и пользователя для каждого хоста:
all:
children:
SiteA:
hosts:
192.168.0.61:
ansible_user: ansible
ansible_python_interpreter: /usr/bin/python3.6
SiteB:
hosts:
192.168.0.62:
ansible_user: ansible
ansible_python_interpreter: /usr/bin/python3.6
proxy:
hosts:
192.168.0.63:
ansible_user: ansible
ansible_python_interpreter: /usr/bin/python3.6