repleo.nginx

Ansible rola - serwer Nginx

Status budowy Ansible Galaxy

Ta rola instaluje i konfiguruje serwer www Nginx. Użytkownik może określić dowolne parametry konfiguracyjne HTTP dla swojej witryny. Można dodać dowolną liczbę witryn z wybranymi konfiguracjami.

Ta rola wspiera certyfikaty SSL letsencrypt dla łatwej instalacji serwerów https.

Wymagania

Ta rola wymaga Ansible w wersji 1.4 lub wyższej, a wymagania dotyczące platformy są wymienione w pliku metadanych.

Zmienne roli

Zmienne, które można przekazać do tej roli oraz ich krótki opis są następujące:

# Wymusza utworzenie pliku nginx.conf. Zwykle nginx.conf jest zapisywany tylko wtedy, gdy nie istnieje.
# Jeśli ten parametr jest prawdziwy, nadpisze aktualny nginx.conf
create_nginx_conf: true

# Maksymalna liczba dozwolonych klientów
nginx_max_clients: 512                                

# Zestaw parametrów HTTP. Zauważ, że można tutaj dodać
# dowolne poprawne parametry http nginx.
# (patrz dokumentacja nginx po szczegóły.)
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"

# Lista hashy definiujących serwery dla nginx,
# podobnie jak z parametrami http. Każdy poprawny parametr serwera
# może być zdefiniowany tutaj.
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"

Przykłady

  1. Zainstaluj nginx z wybranymi dyrektywami HTTP, ale bez skonfigurowanych witryn:

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { sendfile: "on", access_log: "/var/log/nginx/access.log"}, nginx_sites: [] }
  2. Zainstaluj nginx z innymi dyrektywami HTTP niż w poprzednim przykładzie, ale bez skonfigurowanych witryn.

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

Uwaga: Proszę upewnić się, że przekazane dyrektywy HTTP są poprawne, ponieważ ta rola nie sprawdzi poprawności dyrektyw. Szczegóły znajdują się w dokumentacji nginx.

  1. Zainstaluj nginx i dodaj witrynę do konfiguracji.

    • 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" ] ] ] }

Uwaga: Każda dodana witryna jest reprezentowana przez listę hashy, a generowane konfiguracje są umieszczane w /etc/nginx/sites-available/ i mają odpowiadające symlinki z /etc/nginx/sites-enabled/.

Nazwa pliku dla konkretnej konfiguracji witryny jest określona w hashu za pomocą klucza "file_name", można dodać dowolne poprawne dyrektywy serwera do hasha.

  1. Zainstaluj Nginx i dodaj 2 witryny (inna metoda)

    • 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. Dodaj wirtualne hosty do istniejącej instalacji Nginx (i opcjonalnie zainstaluj Nginx, jeśli jeszcze nie jest zainstalowany)

    • 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" ] ] ] }

Uwaga: bez parametru create_nginx_conf: true, rola nie nadpisze nginx.conf. Ta opcja pozwala na instalację wirtualnych hostów do istniejącej instalacji nginx na podstawie tej roli, tzn. skrypty instalacyjne dla różnych usług korzystających z tej roli.

  1. Przykład serwera HTTPS w tym instalacja kluczy

    • 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" ] ] ] }

Uwaga: klucz SSL i certyfikat powinny być dostępne w wywołującym projekcie w katalogu files.

  1. Przykład serwera HTTPS z instalacją kluczy 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" ] ] ] }

Obsługiwacze

Rola NGINX zapewnia dwa obsługiwacze:

  • ponowne załadowanie nginx
  • ponowne uruchomienie nginx

Ponowne załadowanie konfiguracji nginx pozwala na aktualizację serwera bez przestojów. Może jednak zdarzyć się, że stare procesy nie zostaną zaktualizowane. Ponowne uruchomienie zapewni, że serwer www zostanie zatrzymany i uruchomiony ponownie, co spowoduje (krótką) przerwę w działaniu.

Przykład:

- name: Szablon pliku konfiguracyjnego
  template: src=template.j2 dest=/etc/foo.conf
  notify:
     - restart nginx

Zależności

Brak

Licencja

BSD

Informacje o autorze

Repleo, Amstelveen, Holandia -- www.repleo.nl
Jeroen Arnoldus (jeroen@repleo.nl)

Wersja oryginalna przez:

Benno Joy

O projekcie

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

Zainstaluj
ansible-galaxy install repleo.nginx
Licencja
bsd-2-clause
Pobrania
1.5k
Właściciel
Continuous delivery and software development experts