Роль устанавливает 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"
BSD