blauwe_lucht.docker_webapps

blauwe_lucht.docker_webapps

Ansible-Rolle, um mehrere Webapps über HTTPS auf einem einzelnen Docker-Host auszuführen, signiert mit selbstsignierten oder Let's Encrypt-Zertifikaten.

Diese Rolle erstellt einen Reverse-Proxy-Container, der nginx ausführt, und konfiguriert nginx, um Anfragen an die registrierten Webapps weiterzuleiten. Auf Wunsch wird jede Webapp ein Let's Encrypt-Zertifikat anfordern, damit die Webapps über HTTPS erreichbar sind. Diese Zertifikate werden automatisch über einen Certbot-Container erneuert. Wenn Let's Encrypt nicht verwendet wird, werden selbstsignierte Zertifikate für HTTPS erstellt.

Aktueller Status

Alpha. Verwenden Sie diese Rolle nur zu Testzwecken. Es wurden noch keine Molecule-Tests geschrieben.

Anforderungen

Der Knoten sollte bereits Docker ausführen. Dies kann beispielsweise mit der Rolle geerlingguy.docker erfolgen.

Rollen-Variablen

docker_webapps

Konfiguration der auszuführenden Webapps. Beispiel:

docker_webapps:
  - name: samtris
    docker_image: blauwelucht/samtris:v2.0
    port: 8080
    volumes:
      - /var/log:/var/log
name

Der Name des Docker Compose-Dienstes, der generiert wird, und der Name der Subdomain, auf die der Reverse-Proxy lauscht.

docker_image

Das Image, das verwendet wird, um die Webapp zu hosten. Es wird empfohlen, ein Tag zu verwenden, da diese Rolle nicht nach aktualisierten Docker-Images sucht.

port

Der Port im Container, auf dem die Webapp lauscht.

volumes

Volumes sind optional und werden unverändert in die generierte docker-compose.yml kopiert.

docker_webapps_use_lets_encrypt

Setzen Sie use_lets_encrypt nur auf true, wenn der Docker-Host über das Internet erreichbar ist. Dies wird von Let's Encrypt benötigt, um eine Zertifikatsanforderung zu überprüfen. Wenn use_lets_encrypt false ist, wird ein selbstsigniertes Zertifikat verwendet.

docker_webapps_domain_name

Der Domainname, zu dem alle Subdomains gehören.

docker_webapps_email_address

docker_webapps_organization_name

docker_webapps_country_name

Die E-Mail-Adresse, Organisation und das Land, die verwendet werden, um sowohl selbstsignierte als auch Let's Encrypt-Zertifikate anzufordern.

docker_webapps_docker_compose_project

Der Projektname für Docker Compose. Muss nur überschrieben werden, wenn bereits ein Docker Compose-Projekt mit demselben Namen existiert.

docker_webapps_reverse_proxy_container_name

Der Name des Reverse-Proxy-Containers. Muss nur überschrieben werden, wenn bereits ein Container mit diesem Namen existiert.

docker_webapps_certbot_renew_container_name

Der Name des Certbot-Containers für die Zertifikatserneuerung. Muss nur überschrieben werden, wenn bereits ein Container mit diesem Namen existiert.

docker_webapps_certbot_staging_param

Wenn Sie experimentieren, setzen Sie docker_webapps_certbot_staging_param auf "--staging", um die Let's Encrypt-Rate-Limits nicht zu überschreiten.

Abhängigkeiten

Keine

Beispiel-Playbook

- hosts: servers
  roles:
  - name: blauwe_lucht/docker_webapps
    vars:
      docker_webapps:
      - name: samtris
        docker_image: blauwelucht/samtris:v2.0
        port: 8080
      docker_webapps_use_lets_encrypt: true
      docker_webapps_domain_name: example.com
      docker_webapps_email_address: [email protected]
      docker_webapps_organization_name: ACME
      docker_webapps_country_name: NL

Hinweise

  • Stellen Sie sicher, dass das FQDN <site.domain> zu Ihrem Server aufgelöst wird. Das FQDN wird vom Reverse-Proxy verwendet, um Anfragen an die richtige Webapp weiterzuleiten.
  • Für jede Webapp, auf die nginx lauscht, wird ein zusätzlicher Name registriert, um das Testen Ihrer Ansible-Skripte auf einem Testserver zu ermöglichen: <site>-tst.<domain>.
  • Der beste Weg, um Updates für die Webapp-Container zu verwalten, besteht darin, Tags in den Bildnamen zu verwenden. Wenn das Tag in der Konfigurationsvariable docker_webapps aktualisiert wird, wird die Änderung erkannt, und die neuen Images werden heruntergeladen und verwendet, um den bestehenden Container zu ersetzen.
  • Um ein Let's Encrypt-Zertifikat zu löschen/aktualisieren, führen Sie certbot delete --cert-name <fqdn> im Certbot-Container aus, da sonst einige Verläufe vorhanden bleiben und Sie neue Zertifikate mit einem -0001-Präfix erhalten, die von nginx nicht gefunden werden. IMPORTANT: Löschen/Aktualisieren Sie immer nur ein Zertifikat zur Zeit, andernfalls wird nginx nicht starten, da eine der Seiten ein fehlendes SSL-Zertifikat hat, während die Konfiguration immer noch eines angibt. (Ich habe noch keinen Weg gefunden, dies zu lösen).
  • Wenn keine Let's Encrypt-Zertifikate verwendet werden, können die Webapps weiterhin über HTTPS erreicht werden, aber Sie erhalten eine Warnung in Ihrem Browser, dass das Zertifikat selbstsigniert ist. Für diese Webapps können Sie die Warnung sicher ignorieren.

Lizenz

BSD

Autoreninformation

Diese Rolle wurde 2020 von Blauwe Lucht erstellt.

Über das Projekt

Role to run multiple webapps on https on a single Docker host, signed with self-signed or Let's Encrypt certificates.

Installieren
ansible-galaxy install blauwe_lucht.docker_webapps
GitHub Repository
Lizenz
Unknown
Downloads
118
Besitzer
DevOps Coach/Trainer/Path Finder