galaxyproject.nginx
nginx
Eine Ansible Rolle zum Installieren und Verwalten von nginx Servern.
Anforderungen
Diese Rolle installiert nginx über APT auf Debian-Systemen, EPEL auf Enterprise Linux-Systemen oder pkgin auf SmartOS. Andere Systeme und Installationsmethoden werden nicht unterstützt.
Rollen-Variablen
Alle Variablen sind optional.
Allgemeine Konfiguration
nginx_flavor(Standard:full): nginx Paket, das installiert werden soll (für Auswahlmöglichkeiten siehe die nginx Metapakete für Ihre Debian-basierte Distribution). Bei RedHat-basierten Distributionen kann dies entwedergalaxy(für "Galaxy nginx", das die nginx Upload- und PAM-Module enthält) oder ein anderer Wert für EPEL nginx sein. Dieser Wert wird bei pkgin/SmartOS Installationen nicht verwendet. Im Allgemeinen kann TUS verwendet werden undfullist ein sicherer Standard für die Zukunft.nginx_servers: Eine Liste vonserver {}(Virtueller Host) Vorlagen (relativ zutemplates/nginx/, die Dateiendung.j2wird automatisch zu den Listeneinträgen hinzugefügt).nginx_ssl_servers: Wienginx_servers, aber nur installiert, wenn SSL konfiguriert ist.nginx_conf_http: Setzen Sie beliebige Optionen imhttp {}Abschnitt dernginx.conf. Dies ist ein Hash (Wörterbuch), bei dem Schlüssel die nginx Konfigurationsoptionen und Werte den Wert der Option darstellen.nginx_default_redirect_uri: Wenn nginx von EPEL verwendet wird, wird ein Standard-Virtueller Host aktiviert. Diese Option steuert, auf welche URI der Standard-Virtuelle Host umgeleitet werden soll. nginx-Variablen werden unterstützt.nginx_enable_default_server(Standard:true): Aktivieren/deaktivieren Sie den Standard-Virtuellen Host von EPEL.nginx_supervisor: Führen Sie nginx unter Supervisor aus (erfordert das Setzen bestimmter Supervisor-Variablen).nginx_conf_dir(Standard:/etc/nginx): Verzeichnis für die nginx-Konfiguration.
SSL-Konfiguration
Die Variablen nginx_conf_ssl_certificate* steuern die Verwendung von SSL. Wenn sie nicht gesetzt sind, wird SSL nicht aktiviert. Siehe Beispiel-Playbook für die Verwendung.
nginx_conf_ssl_certificate: Dateiname des SSL-Zertifikats auf dem Remote-Host.nginx_conf_ssl_certificate_key: Dateiname des SSL-Privatschlüssels auf dem Remote-Host.nginx_conf_ssl_ciphers: Diessl_ciphersOption innginx.conf, dies ist eine Liste.nginx_conf_ssl_protocols: Diessl_protocolsOption innginx.conf, dies ist eine Liste.
Externe SSL-Konfiguration
nginx_ssl_role(Standard: nicht definiert): Rolle, die zur Einrichtung von SSL ausgeführt wird. Dies ermöglicht die Verwendung von (zum Beispiel) usegalaxy_eu.certbot, das typischerweise nach der Einrichtung und dem Start von nginx auf Port 80 ausgeführt werden muss, aber bevor nginx versucht, SSL zu verwenden (da bis certbot läuft, die Zertifikate, die nginx erwartet, noch nicht existieren). Das Setzen dieser Option bewirkt, dass die SSL-Rolle zu dem passenden Zeitpunkt in dieser Rolle ausgeführt wird. Siehe auchnginx_ssl_servers.nginx_conf_ssl_certificate: Dateiname des SSL-Zertifikats.nginx_conf_ssl_certificate_key: Dateiname des SSL-Privatschlüssels.
In diesem Modus sollten die Variablen nginx_conf_ssl_certificate* absolute Pfade sein.
Playbook SSL-Konfiguration
Wenn nginx_ssl_role nicht gesetzt ist, können Sie diese Rolle verwenden, um Ihr Zertifikat und Ihren Schlüssel aus dem Playbook zu kopieren.
nginx_ssl_conf_dir(Standard:<nginx_conf_dir>/ssl): Wo SSL-Zertifikate und andere SSL-bezogene Dateien kopiert werden sollen.nginx_ssl_src_dir(Standard:files/ssl): Woher SSL-Zertifikate kopiert werden.sslkeys: Ein Hash (Wörterbuch), das private Schlüssel enthält. Schlüssel sind die Dateinamen (ohne führende Pfadelemente), dienginx_conf_ssl_certificate_keyentsprechen.nginx_conf_ssl_trusted_certificate: Dateiname von vertrauenswürdigen Zertifikaten für OCSP-Stapeling (Einstellung aktiviert Stapeling).
In diesem Modus sollten die Variablen nginx_conf_ssl_certificate* relative Pfade sein. Aus historischen Gründen können sie jedoch auch absolute Pfade zu den Dateien auf dem Remote-Host sein. In diesem Fall werden die Zertifikate in nginx_ssl_src_dir mit dem Verzeichnisanteil des Pfades gestrichen gesucht. Wenn der Pfad nicht absolut ist, ist er relativ zu nginx_ssl_src_dir für die Quelle und relativ zu nginx_ssl_conf_dir für das Ziel.
SELinux
Wenn SELinux im Erzwungsmodus ist, werden mehrere zusätzliche Aktionen durchgeführt:
- Wenn
certbot_well_known_rootgesetzt ist, wird es aktualisiert, um dem Typhttpd_sys_content_tBerechtigungen auf allen Unterverzeichnissen zu erlauben. nginx_selinux_allow_local_connections(Standard:false): Erlauben Sie nginx, eine Verbindung zu localhost herzustellen.
Abhängigkeiten
Obwohl es keine Voraussetzung ist, kann geerlingguy.repo-epel verwendet werden, um EPEL mit Ansible zu aktivieren.
Beispiel-Playbook
Hier sind einige Playbook-Beispiele, je nachdem, wo Sie Ihre Zertifikate erhalten.
Lokale SSL-Zertifikate
Installieren Sie nginx mit SSL-Zertifikaten, die im Playbook gespeichert sind (Zertifikat unter {{ playbook_dir }}/files/ssl/snakeoil_cert.pem):
- name: Installieren und Konfigurieren von 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
Installieren Sie nginx mit SSL-Zertifikaten von Let's Encrypt mit Certbot unter Verwendung von usegalaxy_eu.certbot:
- name: Installieren und Konfigurieren von 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
In templates/nginx/vhost1.j2 und templates/nginx/vhost2.j2 sollten Sie Folgendes hinzufügen:
server {
location /.well-known/ {
root {{ certbot_well_known_root }};
}
}
Selbstsignierte Zertifikate
Installieren Sie nginx und verwenden Sie ein generiertes und selbstsigniertes SSL-Zertifikat (gute Option zum Testen von gesicherten Diensten hinter einer Firewall).
- name: Installieren und Konfigurieren von 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: # Identisches Verhalten wie certbot_domains
- vhost1.example.org
- vhost2.example.org
# Diese können auf den Speicherort gesetzt werden, wo Sie Ihre Zertifikate und PK speichern.
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
Lizenz
Academic Free License ("AFL") v. 3.0
Autoreninformation
ansible-galaxy install galaxyproject.nginx