Compare commits
No commits in common. "54582d0f1d865fc74c21046991a80ae50b170942" and "b6f55f118678d08cc7c817626990d55c04e93b29" have entirely different histories.
54582d0f1d
...
b6f55f1186
103
README.md
103
README.md
@ -1,103 +0,0 @@
|
|||||||
# Ansible Jenkins Deployment Pipeline
|
|
||||||
|
|
||||||
## Обзор
|
|
||||||
|
|
||||||
Этот репозиторий содержит проект Ansible, интегрированный с Jenkins, для автоматизации развёртывания двух веб-сайтов (`SiteA` и `SiteB`) и прокси-сервера (`Proxy`). Настройка обеспечивает балансировку нагрузки, автоматические проверки состояния (health checks) и динамическое обновление контента без ручного вмешательства.
|
|
||||||
|
|
||||||
## Описание Структуры
|
|
||||||
|
|
||||||
- **group_vars/**: Содержит файлы с переменными групп хостов. В данном случае `all.yml` содержит общие переменные для всех ролей и хостов.
|
|
||||||
|
|
||||||
- **roles/**: Основная директория с ролями Ansible.
|
|
||||||
- **firewall/**: Роль для настройки и конфигурирования файрвола (`firewalld`), открытия необходимых портов.
|
|
||||||
- **tasks/**: Задачи для установки и настройки `firewalld`.
|
|
||||||
- **vars/**: Переменные, используемые в роли `firewall`.
|
|
||||||
|
|
||||||
- **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-адреса и пользователя для каждого хоста:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
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
|
|
@ -1,6 +1,6 @@
|
|||||||
upstream backend {
|
upstream backend {
|
||||||
{% for server in upstream_servers %}
|
{% for server in upstream_servers %}
|
||||||
server {{ server }} max_fails=1 fail_timeout=1s;
|
server {{ server }} max_fails=3 fail_timeout=30s;
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,4 +26,4 @@ server {
|
|||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1 @@
|
|||||||
siteA_h2: "Дефолтный заголовок H2 для SiteA"
|
additional_content: "{{ additional_content | default('') }}"
|
||||||
siteA_p: "Дефолтный параграф для SiteA"
|
|
||||||
siteB_h2: "Дефолтный заголовок H2 для SiteB"
|
|
||||||
siteB_p: "Дефолтный параграф для SiteB"
|
|
0
ansible/roles/vars/main.yml
Normal file
0
ansible/roles/vars/main.yml
Normal file
Loading…
Reference in New Issue
Block a user