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 entweder galaxy (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 und full ist ein sicherer Standard für die Zukunft.
  • nginx_servers: Eine Liste von server {} (Virtueller Host) Vorlagen (relativ zu templates/nginx/, die Dateiendung .j2 wird automatisch zu den Listeneinträgen hinzugefügt).
  • nginx_ssl_servers: Wie nginx_servers, aber nur installiert, wenn SSL konfiguriert ist.
  • nginx_conf_http: Setzen Sie beliebige Optionen im http {} Abschnitt der nginx.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: Die ssl_ciphers Option in nginx.conf, dies ist eine Liste.
  • nginx_conf_ssl_protocols: Die ssl_protocols Option in nginx.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 auch nginx_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), die nginx_conf_ssl_certificate_key entsprechen.
  • 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_root gesetzt ist, wird es aktualisiert, um dem Typ httpd_sys_content_t Berechtigungen 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

Über das Projekt

Install and manage an nginx server.

Installieren
ansible-galaxy install galaxyproject.nginx
Lizenz
Unknown
Downloads
28.8k
Besitzer
Galaxy is an open, web-based platform for data-intensive research.