Go to file
2024-11-17 19:36:22 +03:00
ansible fix warngins2 2024-11-17 19:36:22 +03:00
.gitignore lftaver1.0 add nginx and proxy 2024-11-05 00:14:05 +03:00
docker-compose.yml lftaver1.0 add nginx and proxy 2024-11-05 00:14:05 +03:00
README.md fix readme2 2024-11-13 00:29:07 +03:00

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-адреса и пользователя для каждого хоста:

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