galaxyproject.nginx

nginx

Роль Ansible для установки и управления серверами nginx.

Требования

Эта роль устанавливает nginx через APT на системах Debian, EPEL на Enterprise Linux системах или pkgin на SmartOS. Другие системы и методы установки не поддерживаются.

Переменные роли

Все переменные являются необязательными.

Общая конфигурация

  • nginx_flavor (по умолчанию: full): пакет nginx для установки (для выбора смотрите метапакеты nginx для вашей Debian-основанной дистрибуции). В дистрибутивах на основе RedHat это может быть galaxy (для "Galaxy nginx", который включает модули загрузки и pam), или любое другое значение для EPEL nginx. Это значение не используется при установках pkgin/SmartOS. Обычно можно использовать TUS, и full является безопасным значением по умолчанию для будущего.
  • nginx_servers: Список шаблонов server {} (виртуальных хостов) (относительно templates/nginx/, к записям файла автоматически добавляется окончание .j2 при поиске).
  • nginx_ssl_servers: Похоже на nginx_servers, но устанавливается только если настроен SSL.
  • nginx_conf_http: Настройка произвольных параметров в секции http {} файла nginx.conf. Это хэш (словарь), где ключи — параметры конфигурации nginx, а значения — значения этих параметров.
  • nginx_default_redirect_uri: При использовании nginx из EPEL включается стандартный виртуальный хост. Эта опция управляет тем, на какой URI должен быть перенаправлен стандартный виртуальный хост. Поддерживаются переменные nginx.
  • nginx_enable_default_server (по умолчанию: true): Включить/отключить стандартный виртуальный хост EPEL.
  • nginx_supervisor: Запуск nginx под супервизором (требуется установка определенных переменных супервизора).
  • nginx_conf_dir (по умолчанию: /etc/nginx): Директория конфигурации nginx.

Конфигурация SSL

Переменные nginx_conf_ssl_certificate* управляют использованием SSL. Если не установлены, SSL не будет включен. См. Пример Playbook для использования.

  • nginx_conf_ssl_certificate: Имя файла SSL сертификата на удаленном хосте.
  • nginx_conf_ssl_certificate_key: Имя файла закрытого ключа SSL на удаленном хосте.
  • nginx_conf_ssl_ciphers: Опция ssl_ciphers в nginx.conf, это список.
  • nginx_conf_ssl_protocols: Опция ssl_protocols в nginx.conf, это список.

Внешняя конфигурация SSL

  • nginx_ssl_role (по умолчанию: не задан): Роль для настройки SSL. Это позволяет использовать (например) usegalaxy_eu.certbot, который обычно должен запускаться после того, как nginx установлен и работает на порту 80, но перед тем как nginx попытается использовать SSL (потому что до запуска certbot сертификаты, ожидаемые nginx, еще не существуют). Установка этой переменной приведет к запуску роли SSL в соответствующий момент. Также см. nginx_ssl_servers.
  • nginx_conf_ssl_certificate: Имя файла SSL сертификата.
  • nginx_conf_ssl_certificate_key: Имя файла закрытого ключа SSL.

В этом режиме переменные nginx_conf_ssl_certificate* должны быть абсолютными путями.

Конфигурация SSL в Playbook

Если nginx_ssl_role не установлен, вы можете использовать эту роль для копирования вашего сертификата и ключа из playbook.

  • nginx_ssl_conf_dir (по умолчанию: <nginx_conf_dir>/ssl): Куда копировать SSL сертификаты и другие файлы, связанные с SSL.
  • nginx_ssl_src_dir (по умолчанию: files/ssl): Откуда копировать SSL сертификаты.
  • sslkeys: Хэш (словарь), содержащий закрытые ключи. Ключи — имена файлов (без ведущих компонентов пути), соответствующие nginx_conf_ssl_certificate_key.
  • nginx_conf_ssl_trusted_certificate: Имя файла доверенных сертификатов для OCSP stapling (установка активирует stapling).

В этом режиме переменные nginx_conf_ssl_certificate* должны быть относительными путями. Однако, по историческим причинам, они могут быть абсолютными путями к файлам на удаленном хосте. Если это так, сертификаты ищутся в nginx_ssl_src_dir с обрезанной частью пути к директории. Если путь не абсолютный, он будет относительным к nginx_ssl_src_dir для источника и относительным к nginx_ssl_conf_dir для назначения.

SELinux

Если SELinux находится в режиме принудительного контроля, будут предприняты несколько дополнительных действий:

  • Если задано certbot_well_known_root, оно будет обновлено для разрешения типа httpd_sys_content_t на всех подкаталогах.
  • nginx_selinux_allow_local_connections (по умолчанию: false): Разрешить nginx соединяться с localhost.

Зависимости

Хотя это не требование, geerlingguy.repo-epel может быть использован для включения EPEL с помощью Ansible.

Пример Playbook

Вот несколько примеров playbook в зависимости от того, откуда вы получаете ваши сертификаты.

Локальные SSL сертификаты

Установите nginx с SSL сертификатами, хранящимися в playbook (сертификат по адресу {{ playbook_dir }}/files/ssl/snakeoil_cert.pem):

- name: Установить и настроить nginx
  hosts: webservers
  vars:
    sslkeys:
      snakeoil_privatekey.pem: |
        -----BEGIN PRIVATE KEY-----
        MIIE...
        -----END PRIVATE KEY-----
    nginx_conf_ssl_certificate: snakeoil_cert.pem
    nginx_conf_ssl_certificate_key: snakeoil_privatekey.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_conf_http:
      client_max_body_size: 1g
  roles:
    - galaxyproject.nginx

Let's Encrypt

Установите nginx с SSL сертификатами, полученными от Let's Encrypt с Certbot с использованием usegalaxy_eu.certbot:

- name: Установить и настроить nginx
  hosts: webservers
  vars:
    nginx_conf_ssl_certificate: /etc/ssl/certs/fullchain.pem
    nginx_conf_ssl_certificate_key: /etc/ssl/private/private.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: usegalaxy_eu.certbot
    certbot_auth_method: --webroot
    certbot_domains:
      - vhost1.example.org
      - vhost2.example.org
    certbot_admin_email: [email protected]
    certbot_agree_tos: --agree-tos
    certbot_well_known_root: /var/www/_well-known_root
    certbot_post_renewal: |
      systemctl restart nginx || true
  roles:
    - galaxyproject.nginx

В templates/nginx/vhost1.j2 и templates/nginx/vhost2.j2 обязательно добавьте что-то вроде:

server {
    location /.well-known/ {
        root {{ certbot_well_known_root }};
    }
}

Самоподписанные сертификаты

Установите nginx и используйте сгенерированный самоподписанный SSL сертификат (хороший вариант для тестирования защищенных сервисов за брандмауэром).

- name: Установить и настроить nginx
  hosts: webservers
  vars:
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: galaxyproject.self_signed_certs
    openssl_domains: # Идентичное поведение к certbot_domains
      - vhost1.example.org
      - vhost2.example.org
    # Эти пути могут быть установлены где угодно, где вы хотите хранить ваши сертификаты и ключи.
    nginx_conf_ssl_certificate_key: /etc/ssl/private/{{ openssl_domains[0] }}.pem
    nginx_conf_ssl_certificate: /etc/ssl/certs/{{ openssl_domains[0] }}.crt
  roles:
    - galaxyproject.nginx

Лицензия

Academic Free License ("AFL") v. 3.0

Информация об авторах

О проекте

Install and manage an nginx server.

Установить
ansible-galaxy install galaxyproject.nginx
Лицензия
Unknown
Загрузки
28k
Владелец
Galaxy is an open, web-based platform for data-intensive research.