Skip to content

kemko/frontend-nginx-role

Repository files navigation

frontend-nginx-role

Роль устанавливает nginx, скачивает файл с данными о том, что и куда нужно проксировать, затем генерирует на основании полученных данных конфигруацию для nginx. Рассчитана только на обычную редакцию, поэтому возможности Plus не используются и не раскрываются. Поддерживается только CentOS.

Роль в текущем виде не задумывалась и не предназначена для реального использования. Роль появилась в рамках выполнения тестового задания. Примерная формулировка - написать роль, которая установит nginx, возьмёт из внешнего источника данные об апстримах и сконфигурирует установленный nginx соответствующим образом.

Требования

Внешний файл с описанием апстримов. Пример:

---

- name: testapp1
  external_domains:
    - app1.test.com
  servers:
    - name: 1.1.1.1
      backup: true
    - name: 2.2.2.2

- name: testapp2
  external_domains:
    - app2.test.com
  servers:
    - name: 3.3.3.3
      backup: true
    - name: 4.4.4.4
      weight: 2

Список параметров основного блока:

Название Обязательный Описание
name Да Название апстрима
external_domain Да Домен или несколько доменов, которые будут прописаны переданы в параметре server_name, поддерживаются регулярные выражения
servers Да Блок с описанием серверов, которые будут обрабатывать запросы этого upstream, описание возможных параметров этого блока будет ниже
additional_location_config Нет Позволяет задать в конфигурации nginx произвольный набор параметров на уровне location / { ... }
additional_server_config Нет Позволяет задать в конфигурации nginx произвольный набор параметров на уровне server { ... }

Список параметров блока servers:

Название Обязательный Описание
name Да IP-адрес или DNS-имя сервера. Допускается указание порта. DNS-имя будет резолвиться только в момент чтения конфига и затем не перепроверяется
weight Нет Задаёт вес сервера, по умолчанию 1
max_conns Нет Ограничивает максимальное число одновременных активных соединений к проксируемому серверу, по умолчанию ограничения нет
max_fails Нет Задаёт число неудачных попыток работы с сервером, которые должны произойти в течение времени, заданного параметром fail_timeout, чтобы сервер считался недоступным на период времени, также заданный параметром fail_timeout. По умолчанию число попыток устанавливается равным 1. Нулевое значение отключает учёт попыток
fail_timeout Нет Задаёт время, в течение которого должно произойти заданное число неудачных попыток работы с сервером для того, чтобы сервер считался недоступным и время, в течение которого сервер будет считаться недоступным. По умолчанию параметр равен 10 секундам
backup Нет Помечает сервер как запасной сервер. На него будут передаваться запросы в случае, если не работают основные серверы
down Нет Помечает сервер как постоянно недоступный

Параметры роли

Название Значение по умлочанию Описание
nginx_upstreams_url Отсутствует Единственный обязательный параметр. Путь до yaml-файла c описанием апстримов. Формат файла описан в секции Требования
nginx_listen_addr 0.0.0.0 Адрес, на котором nginx будет принимать соединения, 0.0.0.0 означает слушать принимать соединения, пришедшие на все имеющиеся на сервере IP-адреса, включая те, которые появились после запуска nginx
nginx_listen_port 80 Порт, на котором nginx будет принимать соединения
nginx_start true Должен ли nginx быть запущен. Значение false останавливает демон и отключает его автозапуск
nginx_branch mainline Ветка nginx. Существует stable (чётные версии), в которой только исправляются баги и mainline (нечётные), в которой происходит ввод новых возможностей. Используется для выбора адреса репозитория
nginx_version 1.17.2 Версия nginx для установки. Неплохая идея держать на всех серверах одну и ту же версию /
nginx_worker_processes auto Количество запускаемых воркеров nginx. В значении auto, nginx пытается вычислить количество CPU на сервере и запускает это же количество воркеров
nginx_worker_connections 1024 Максимальное количество соединений, которое будет одновременно обрабатывать один воркер
nginx_keepalive_timeout 65 Задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Значение 0 запрещает keep-alive соединения с клиентами

Пример плейбука

    - hosts: frontends
      roles:
        - role: frontend-nginx-role
          nginx_upstreams_url: "http://configs.test.com/upstreams/frontend.yaml"

License

BSD

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages