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.

O projekcie

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

Zainstaluj
ansible-galaxy install blauwe_lucht.docker_webapps
Licencja
Unknown
Pobrania
118
Właściciel
DevOps Coach/Trainer/Path Finder