repleo.nginx
Ansible rola - serwer Nginx
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
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: [] }
- hosts: all
roles:
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: [] }
- hosts: all
roles:
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.
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.
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" ] ] }
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.
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.
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
Ansible role for installing nginx, including support for SSL, letsencrypt and virtual host deployments
ansible-galaxy install repleo.nginx