repleo.nginx

Ansible роль - сервер Nginx

Статус сборки Ansible Galaxy

Эта роль устанавливает и настраивает веб-сервер nginx. Пользователь может указать любые параметры конфигурации http, которые он хочет применить к своему сайту. Можно добавить любое количество сайтов с конфигурацией на ваш выбор.

Эта роль поддерживает SSL letsencrypt для легкой установки веб-серверов с https.

Требования

Эта роль требует Ansible версии 1.4 или выше, а требования к платформе указаны в файле метаданных.

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

Переменные, которые можно передать в эту роль, и их краткое описание:

# Принудительное создание nginx.conf. Обычно, nginx.conf создается только если он не существует.
# Если этот параметр истинный, он перезапишет текущий nginx.conf
create_nginx_conf: true

# Максимальное количество клиентов
nginx_max_clients: 512                                

# Хэш параметров http. Обратите внимание, что можно добавить любые 
# допустимые параметры http для nginx.
# (см. документацию nginx для подробностей.)
nginx_http_params:                                    
  sendfile: "on"                                      
  tcp_nopush: "on"
  tcp_nodelay: "on"
  keepalive_timeout: "65"
  access_log: "/var/log/nginx/access.log"
  error_log: "/var/log/nginx/error.log"

# Список хэшей, которые определяют серверы для nginx,
# как и с параметрами http. Любые допустимые параметры сервера
# можно определить здесь.
nginx_sites:
- file_name: foo
  listen: 8080
  server_name: localhost
  root: "/tmp/site1"
  ssl:
    supplier: "local"
    local_keystore_dir: "{{ playbook_dir }}/files/"
    key: "ssl.key"
    certificate: "ssl_chain.pem"
  locations:
    - name: /
      lines:
        - "try_files: $uri $uri/ /index.html"
    - name: /images/
      lines:
        - "try_files: $uri $uri/ /index.html"
  lines:
    - "return 301 https://$http_host$request_uri;"
- file_name: bar
  listen: 9090
  server_name: ansible
  root: "/tmp/site2"
  locations:
    - name: /
      lines:
        - "try_files: $uri $uri/ /index.html"
    - name: /images/
      lines:
        - "try_files: $uri $uri/ /index.html"

Примеры

  1. Установить nginx с выбранными HTTP директивами, но без сконфигурированных сайтов:

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { sendfile: "on", access_log: "/var/log/nginx/access.log"}, nginx_sites: [] }
  2. Установить nginx с другими HTTP директивами, чем в предыдущем примере, но без сконфигурированных сайтов.

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [] }

Примечание: Пожалуйста, убедитесь, что переданные HTTP директивы допустимы, так как эта роль не проверяет их валидность. См. документацию nginx для подробностей.

  1. Установить nginx и добавить сайт в конфигурацию.

    • hosts: all

      roles:

      • { role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Примечание: Каждый добавленный сайт представлен списком хэшей, а сгенерированные конфигурации расположены в /etc/nginx/sites-available/ и имеют соответствующие символические ссылки в /etc/nginx/sites-enabled/

Имя файла для конкретной конфигурации сайта указывается в хэше с ключом "file_name", любые допустимые директивы сервера можно добавить в хэш.

  1. Установить Nginx и добавить 2 сайта (другой метод)

    • hosts: all

      roles:

      • { role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] } - file_name: bar, server_name: ansible, listen: 9090, root: "/tmp/site2", locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] }
  2. Добавить виртуальные хосты в существующую установку Nginx (и при необходимости установить Nginx, если он ещё не установлен)

    • hosts: all

      roles:

      • { role: nginx, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] } - file_name: bar, server_name: ansible, listen: 9090, root: "/tmp/site2", locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Примечание: без параметра create_nginx_conf: true роль не перезапишет nginx.conf. Эта опция позволяет установить виртуальные хосты в существующую установку nginx на основе этой роли, т.е. скрипты установки для различных сервисов, использующих эту роль.

  1. Пример HTTPS сервера с установкой ключей

    • hosts: all

      roles:

      • { role: nginx, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, ssl: { supplier: "local" local_keystore_dir: "{{ playbook_dir }}/files/", key: localhost.key, certificate: localhost_chain.pem }, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Примечание: ssl ключ и сертификат должны быть доступны в проекте, который вызывает эту роль, в директории files.

  1. Пример HTTPS сервера с установкой ключей letsencrypt

    • hosts: all

      roles:

      • { role: nginx, nginx_separate_logs_per_site: true, nginx_sites: [ - file_name: bar.ssl, server_name: "example.com www.example.com", listen: 443, ssl: { supplier: "letsencrypt", domains: [ "example.com", "www.example.com" ], generate_redirect: true }, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Обработчики

Роль NGINX предоставляет два обработчика:

  • перезагрузить nginx
  • перезапустить nginx

Перезагрузка конфигурации nginx позволяет вам обновить веб-сервер без времени простоя. Однако может случиться так, что старые процессы не обновятся. Перезапуск гарантирует, что веб-сервер будет остановлен и запущен снова, что приведет к (короткому) времени простоя.

Пример:

- name: шаблон конфигурационного файла
  template: src=template.j2 dest=/etc/foo.conf
  notify:
     - перезапуск nginx

Зависимости

Нет

Лицензия

BSD

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

Repleo, Амстелвен, Нидерланды -- www.repleo.nl
Jeroen Arnoldus (jeroen@repleo.nl)

Оригинальная версия:

Benno Joy

О проекте

Ansible role for installing nginx, including support for SSL, letsencrypt and virtual host deployments

Установить
ansible-galaxy install repleo.nginx
Лицензия
bsd-2-clause
Загрузки
1.5k
Владелец
Continuous delivery and software development experts