Files
frontend-nginx-role/README.md
2019-08-04 11:12:16 +03:00

83 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
frontend-nginx-role
=========
Роль устанавливает nginx, скачивает файл с данными о том, что и куда нужно проксировать, затем генерирует на основании полученных данных конфигруацию для nginx. Рассчитана только на обычную редакцию, поэтому возможности Plus не используются и не раскрываются. Поддерживается только CentOS.
**Роль в текущем виде не задумывалась и не предназначена для реального использования**. Роль появилась в рамках выполнения тестового задания. Примерная формулировка - написать роль, которая установит nginx, возьмёт из внешнего источника данные об апстримах и сконфигурирует установленный nginx соответствующим образом.
Требования
----------
Внешний файл с описанием апстримов. Пример:
```yaml
---
- 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 соединения с клиентами |
Пример плейбука
---------------
```yaml
- hosts: frontends
roles:
- role: frontend-nginx-role
nginx_upstreams_url: "http://configs.test.com/upstreams/frontend.yaml"
```
License
-------
BSD