ansible | ||
.gitignore | ||
docker-compose.yml | ||
README.md |
Ansible Jenkins Deployment Pipeline
Обзор
Этот репозиторий содержит проект Ansible, интегрированный с Jenkins, для автоматизации развёртывания двух веб-сайтов (SiteA
и SiteB
) и прокси-сервера (Proxy
). Настройка обеспечивает балансировку нагрузки, автоматические проверки состояния (health checks) и динамическое обновление контента без ручного вмешательства.
Структура Репозитория
ansible/ ├── group_vars/ │ └── all.yml ├── roles/ │ ├── firewall/ │ │ ├── tasks/ │ │ │ └── main.yml │ │ └── vars/ │ │ └── main.yml │ ├── nginx_proxy/ │ │ ├── tasks/ │ │ │ └── main.yml │ │ ├── templates/ │ │ │ └── proxy.conf.j2 │ │ └── vars/ │ │ └── main.yml │ ├── nginx_site/ │ │ ├── tasks/ │ │ │ └── main.yml │ │ ├── templates/ │ │ │ ├── siteA.conf.j2 │ │ │ ├── siteB.conf.j2 │ │ │ └── index.html.j2 │ │ └── vars/ │ │ └── main.yml │ └── ssl_certificate/ │ ├── tasks/ │ │ └── main.yml │ └── vars/ │ └── main.yml ├── playbook.yml ├── inventory.yml ├── ansible.cfg └── Jenkinsfile
Описание Структуры
-
group_vars/: Содержит файлы с переменными групп хостов. В данном случае
all.yml
содержит общие переменные для всех ролей и хостов. -
roles/: Основная директория с ролями Ansible.
-
firewall/: Роль для настройки и конфигурирования файрвола (
firewalld
), открытия необходимых портов.- tasks/: Задачи для установки и настройки
firewalld
. - vars/: Переменные, используемые в роли
firewall
.
- tasks/: Задачи для установки и настройки
-
nginx_proxy/: Роль для установки и настройки Nginx как прокси-сервера с балансировкой нагрузки и проверкой состояния.
- tasks/: Задачи для установки Nginx и деплоя конфигурации прокси.
- templates/: Шаблоны конфигурационных файлов Nginx для прокси-сервера.
- vars/: Переменные, используемые в роли
nginx_proxy
.
-
nginx_site/: Роль для установки и настройки Nginx на целевых сайтах (
SiteA
иSiteB
), а также деплоя HTML контента.- tasks/: Задачи для установки Nginx, создания корневых директорий сайтов, деплоя конфигураций и HTML файлов.
- templates/: Шаблоны конфигурационных файлов Nginx и HTML страниц для сайтов.
- vars/: Переменные, используемые в роли
nginx_site
.
-
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-адрес прокси-сервера.
В 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:
firewall_ports
: Список портов и протоколов, которые необходимо открыть в файрволе (например, SSH, HTTP, HTTPS).
-
nginx_proxy/vars/main.yml:
upstream_servers
: Список IP-адресов бэкенд-серверов (SiteA
иSiteB
) для балансировки нагрузки.
-
ssl_certificate/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
SiteB:
hosts:
192.168.0.62:
ansible_user: ansible
proxy:
hosts:
192.168.0.63:
ansible_user: ansible