repleo.nginx
Ansible-Rolle - Nginx-Server
Diese Rolle installiert und konfiguriert den Nginx-Webserver. Der Benutzer kann beliebige HTTP-Konfigurationsparameter angeben, die er für seine Website anwenden möchte. Es können beliebig viele Websites mit Ihren gewählten Konfigurationen hinzugefügt werden.
Diese Rolle unterstützt Let's Encrypt SSL für die einfache Installation von HTTPS-Webservern.
Anforderungen
Diese Rolle benötigt Ansible 1.4 oder höher, und die Plattformanforderungen sind in der Metadaten-Datei aufgeführt.
Rollenvariablen
Die Variablen, die an diese Rolle übergeben werden können, sind wie folgt beschrieben:
# Erzwingt die Erstellung von nginx.conf. Normalerweise wird nginx.conf nur geschrieben, wenn sie nicht existiert.
# Wenn dieser Parameter wahr ist, wird die aktuelle nginx.conf überschrieben.
create_nginx_conf: true
# Die maximal erlaubten Clients
nginx_max_clients: 512
# Ein Hash der HTTP-Parameter. Hinweis: Alle gültigen nginx-HTTP-Parameter können hier hinzugefügt werden.
# (siehe die Nginx-Dokumentation für weitere Details.)
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"
# Eine Liste von Hashes, die die Server für Nginx definieren,
# ebenso wie HTTP-Parameter. Alle gültigen Serverparameter
# können hier definiert werden.
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"
Beispiele
Installieren Sie Nginx mit HTTP-Direktiven Ihrer Wahl, aber ohne konfigurierte Websites:
- 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:
Installieren Sie Nginx mit anderen HTTP-Direktiven als im vorherigen Beispiel, jedoch ohne konfigurierte Websites.
- 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:
Hinweis: Bitte stellen Sie sicher, dass die übergebenen HTTP-Direktiven gültig sind, da diese Rolle die Gültigkeit der Direktiven nicht überprüft. Weitere Details finden Sie in der Nginx-Dokumentation.
Installieren Sie Nginx und fügen Sie eine Website zur Konfiguration hinzu.
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" ] ] ] }
Hinweis: Jede hinzugefügte Website wird durch eine Liste von Hashes dargestellt, und die generierten Konfigurationen werden in /etc/nginx/sites-available/
abgelegt und haben entsprechende Symlinks von /etc/nginx/sites-enabled/
.
Der Dateiname für die spezifische Standortkonfiguration wird im Hash mit dem Schlüssel "file_name" angegeben, alle gültigen Serveranweisungen können zu diesem Hash hinzugefügt werden.
Installieren Sie Nginx und fügen Sie 2 Websites (andere Methode) hinzu.
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" ] ] }
Fügen Sie virtuelle Hosts zu einer bestehenden Nginx-Installation hinzu (und installieren Sie optinal Nginx, falls er noch nicht installiert ist)
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" ] ] ] }
Hinweis: Ohne den Parameter create_nginx_conf: true wird die Rolle nginx.conf nicht überschreiben. Diese Option ermöglicht es, virtuelle Hosts in einer vorhandenen Nginx-Installation basierend auf dieser Rolle hinzuzufügen, d. h. Installationsskripte für verschiedene Dienste, die diese Rolle verwenden.
Beispiel eines HTTPS-Servers einschließlich Installation von Schlüsseln
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" ] ] ] }
Hinweis: Der SSL-Schlüssel und das Zertifikat sollten in dem aufrufenden Projekt im Verzeichnis "files" verfügbar sein.
Beispiel eines HTTPS-Servers einschließlich Installation von Let's Encrypt-Schlüsseln
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" ] ] ] }
Handler
Die NGINX-Rolle bietet zwei Handler:
- Nginx neu laden
- Nginx neu starten
Das Neuladen der Nginx-Konfiguration ermöglicht es Ihnen, Ihren Webserver ohne Ausfallzeiten zu aktualisieren. Es kann jedoch vorkommen, dass alte Prozesse nicht aktualisiert werden. Ein Neustart stellt sicher, dass der Webserver beendet und erneut gestartet wird und führt zu (kurzen) Ausfallzeiten.
Beispiel:
- name: Konfigurationsdatei verarbeiten
template: src=template.j2 dest=/etc/foo.conf
notify:
- Nginx neu starten
Abhängigkeiten
Keine
Lizenz
BSD
Autoreninformationen
Repleo, Amstelveen, Holland -- www.repleo.nl
Jeroen Arnoldus (jeroen@repleo.nl)
Ursprüngliche Version von:
Benno Joy
Ansible role for installing nginx, including support for SSL, letsencrypt and virtual host deployments
ansible-galaxy install repleo.nginx