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.
Role to run multiple webapps on https on a single Docker host, signed with self-signed or Let's Encrypt certificates.
ansible-galaxy install blauwe_lucht.docker_webapps