blauwe_lucht.docker_webapps
blauwe_lucht.docker_webapps
Rola Ansible do uruchamiania wielu aplikacji webowych na HTTPS na jednym hoście Docker, podpisanych certyfikatami samopodpisanymi lub certyfikatami Let's Encrypt.
Ta rola tworzy kontener odwrotnego proxy działającego na nginx i konfiguruje nginx do przekazywania żądań do zarejestrowanych aplikacji webowych. Na żądanie każda aplikacja webowa poprosi o certyfikat Let's Encrypt, aby była osiągalna przez HTTPS. Certyfikaty te będą automatycznie odnawiane za pomocą kontenera certbot. Jeśli Let's Encrypt nie jest używane, zostaną wygenerowane certyfikaty samopodpisane dla HTTPS.
Aktualny stan
Alpha. Używaj tej roli tylko w celach testowych. Nie napisano jeszcze testów molekułowych.
Wymagania
Węzeł powinien już działać na Dockerze. Można to zrobić na przykład z rolą geerlingguy.docker.
Zmienne roli
docker_webapps
Konfiguracja aplikacji webowych do uruchomienia. Przykład:
docker_webapps:
- name: samtris
docker_image: blauwelucht/samtris:v2.0
port: 8080
volumes:
- /var/log:/var/log
name
Nazwa usługi Docker Compose, która zostanie wygenerowana, oraz nazwa subdomeny, na którą będzie nasłuchiwać odwrotne proxy.
docker_image
Obraz, który będzie używany do hostowania aplikacji webowej. Zaleca się użycie tagu, ponieważ ta rola nie sprawdzi aktualizacji obrazów Docker.
port
Port w kontenerze, na którym nasłuchuje aplikacja webowa.
volumes
Wolumeny są opcjonalne; zostaną skopiowane dosłownie do wygenerowanego docker-compose.yml.
docker_webapps_use_lets_encrypt
Ustaw use_lets_encrypt na true, tylko gdy host Docker jest dostępny z internetu. Jest to wymagane przez Let's Encrypt do weryfikacji żądania certyfikatu. Gdy use_lets_encrypt jest false, używany będzie certyfikat samopodpisany.
docker_webapps_domain_name
Nazwa domeny, z której wszystkie subdomeny korzystają.
docker_webapps_email_address
docker_webapps_organization_name
docker_webapps_country_name
Adres e-mail, nazwa organizacji i kraj używane do żądania zarówno certyfikatów samopodpisanych, jak i Let's Encrypt.
docker_webapps_docker_compose_project
Nazwa projektu dla Docker Compose. Należy nadpisać tylko wtedy, gdy istnieje już projekt Docker Compose o tej samej nazwie.
docker_webapps_reverse_proxy_container_name
Nazwa kontenera odwrotnego proxy. Należy nadpisać tylko wtedy, gdy już istnieje kontener o tej nazwie.
docker_webapps_certbot_renew_container_name
Nazwa kontenera certbot do odnawiania certyfikatów. Należy nadpisać tylko wtedy, gdy już istnieje kontener o tej nazwie.
docker_webapps_certbot_staging_param
Podczas testowania ustaw docker_webapps_certbot_staging_param na "--staging", aby nie przekroczyć limitów Let's Encrypt.
Zależności
Brak
Przykładowy 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
Uwagi
- Upewnij się, że FQDN
<site.domain>
jest skierowane na twój serwer. FQDN jest używane przez odwrotne proxy do kierowania żądań do odpowiedniej aplikacji webowej. - Dla każdej aplikacji webowej nginx nasłuchuje na dodatkowej nazwie strony, aby móc testować swoje skrypty Ansible
na serwerze testowym:
<site>-tst.<domain>
. - Najlepszym sposobem na zarządzanie aktualizacjami kontenerów aplikacji webowych jest użycie tagów w nazwach obrazów. Aktualizując tag w zmiennej konfiguracji docker_webapps, zmiana zostanie wykryta, a nowe obrazy zostaną pobrane i użyte do zastąpienia istniejącego kontenera.
- Aby usunąć/odnowić certyfikat Let's Encrypt, wykonaj
certbot delete --cert-name <fqdn>
w kontenerze certbot, w przeciwnym razie część historii pozostanie, a ty otrzymasz nowe certyfikaty z przedrostkiem -0001, które nie będą znajdowane przez nginx. IMPORTANT: usuń/odnów tylko jeden certyfikat na raz, w przeciwnym razie nginx nie wystartuje, ponieważ jedna z witryn nie ma certyfikatu SSL, podczas gdy konfiguracja wciąż go wymaga. (Jeszcze nie znalazłem sposobu na naprawienie tego). - Gdy nie są używane certyfikaty Let's Encrypt, aplikacje webowe nadal mogą być dostępne przez HTTPS, ale w przeglądarce pojawi się ostrzeżenie, że certyfikat jest samopodpisany. W przypadku tych aplikacji można bezpiecznie zignorować te ostrzeżenia.
Licencja
BSD
Informacje o autorze
Ta rola została stworzona w 2020 roku przez Blauwe Lucht.
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