dbrennand.caddy_docker
Rola Ansible: dbrennand.caddy_docker
Rola Ansible do uruchamiania Caddy w kontenerze Docker.
Wymagania
Zbiór Ansible
community.docker
:ansible-galaxy collection install community.docker
Zmienne Roli
caddy_docker_state: present
Zarządzanie stanem zasobów wdrożonych przez tę rolę. Ustaw na absent
, aby usunąć katalogi Caddy (dane i konfigurację), plik Caddyfile, sieć Docker, obraz i kontener.
caddy_docker_config_directory:
path: ~/.config/caddy/
# Opcjonalne
# owner: właściciel
# group: grupa
# mode: 0755
caddy_docker_data_directory:
path: ~/.local/share/caddy/
# ...
Absolutna ścieżka do katalogów konfiguracyjnych i danych Caddy, które mają być utworzone. Podłączone do kontenera jako montaż wiązania.
caddy_docker_caddyfile: |-
localhost
respond "Witaj, świecie!"
Zawartość Caddyfile używana do konfiguracji Caddy.
caddy_docker_caddyfile_file:
path: ~/.config/Caddyfile
# ...
Absolutna ścieżka do pliku Caddyfile, który ma być utworzony. Podłączone do kontenera jako montaż wiązania.
caddy_docker_image: caddy:2.7.4-alpine
caddy_docker_builder_image: caddy:2.7.4-builder
Repozytoria, nazwy i tagi obrazów kontenerów używane do wdrażania Caddy jako kontenera. Zmienna caddy_docker_builder_image
jest używana tylko wtedy, gdy caddy_docker_plugins
jest wypełnione.
caddy_docker_builder_directory:
path: /tmp/caddy-builder/
# ...
Absolutna ścieżka do katalogu używanego jako kontekst budowy kontenera. Ta zmienna jest używana tylko wtedy, gdy caddy_docker_plugins
jest wypełnione. Możesz chcieć nadpisać tę zmienną, jeśli używasz własnego szablonu dockerfile i chcesz dołączyć pliki podczas procesu budowy kontenera Caddy.
caddy_docker_builder_template: dockerfile.j2
# Użycie pluginu lookup
# caddy_docker_builder_template: "{{ lookup('template', 'templates/dockerfile.custom.j2') }}"
Szablon Dockerfile używany do budowy kontenera Caddy. Ta zmienna jest używana tylko wtedy, gdy caddy_docker_plugins
jest wypełnione.
caddy_docker_builder_force: false
Czy wymusić odbudowę kontenera Caddy. Ta zmienna jest używana tylko wtedy, gdy caddy_docker_plugins
jest wypełnione.
caddy_docker_plugins: []
# Przykład
# caddy_docker_plugins:
# - github.com/caddy-dns/cloudflare
# - github.com/lucaslorentz/caddy-docker-proxy/v2
Lista wtyczek do uwzględnienia w kontenerze Caddy.
caddy_docker_networks:
- name: caddy
Nazwy sieci Docker, które mają zostać utworzone i podłączone do kontenera Caddy.
caddy_docker_network_mode: default
Tryb sieci Docker do użycia dla kontenera Caddy. Zmienne caddy_docker_networks
, caddy_docker_ports
i caddy_docker_exposed_ports
nie mają wpływu, gdy ta zmienna jest ustawiona na host
.
caddy_docker_command: caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
Polecenie do uruchamiania kontenera Caddy. Możesz chcieć nadpisać to, gdy używasz wtyczek.
caddy_docker_restart_policy: unless-stopped
Polityka ponownego uruchamiania kontenera Caddy.
caddy_docker_ports:
- 80:80
- 443:443
- "443:443/udp"
caddy_docker_exposed_ports: []
# Przykład
# caddy_docker_exposed_ports:
# - 9000
Porty do wystawienia w kontenerze Caddy.
caddy_docker_etc_hosts: {}
# Przykład
# caddy_docker_etc_hosts:
# host.docker.internal: host-gateway
Mapowania hostów do adresów IP, które mają zostać umieszczone w pliku /etc/hosts
kontenera Caddy.
caddy_docker_extra_volumes: []
# Przykład
# caddy_docker_extra_volumes:
# - /site:/srv
Dodatkowe woluminy do podłączenia do kontenera Caddy.
caddy_docker_environment_variables: {}
# Przykład
# caddy_docker_environment_variables:
# DOMAIN: example.com
Zmienne środowiskowe do zastosowania w kontenerze Caddy.
Zależności
Brak.
Przykładowy Playbook
- name: dbrennand.caddy_docker
hosts: all
vars:
pip_install_packages:
- name: docker
pre_tasks:
- name: Aktualizacja pamięci podręcznej apt
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- dbrennand.caddy_docker
Przykład - Wyzwanie DNS-01 Cloudflare
Ten przykład używa modułu Cloudflare dla Caddy, aby uzyskać certyfikaty (w tym wildcardy) od Let's Encrypt dla domeny zarządzanej przez Cloudflare. Jest to przydatne, kiedy chcesz uzyskać certyfikaty bez otwierania portu 80 (HTTP) w Internecie.
Musisz wygenerować token API, aby Caddy mógł się autoryzować w API Cloudflare i utworzyć rekord TXT dla wyzwania DNS-01:
Przejdź do strony profilu na panelu kontrolnym Cloudflare.
Po lewej stronie wybierz API Tokens > Create Token.
Wybierz szablon tokenu API nazwany Edit zone DNS.
Zmień Nazwa tokenu na swoją.
W sekcji Uprawnienia wybierz + Dodaj więcej i dodaj uprawnienie:
Zone / Zone / Read
.W sekcji Zasoby strefy dołącz swoją strefę:
Include / Specific zone / example.tld
.Opcjonalne - Skonfiguruj filtrowanie adresów IP klienta, jeśli to konieczne.
Kliknij Kontynuuj do podsumowania > Utwórz token.
- name: dbrennand.caddy_docker - Cloudflare
hosts: all
vars:
# zmienne roli geerlingguy.pip
pip_install_packages:
- name: docker
# zmienne roli dbrennand.caddy_docker
caddy_docker_caddyfile: |-
{
email {$ACME_EMAIL}
}
# Wyzwanie DNS-01 Cloudflare
(cloudflare) {
tls {
dns cloudflare {$CLOUDFLARE_API_TOKEN}
}
}
service.{$DOMAIN} {
import cloudflare
reverse_proxy container:port
}
caddy_docker_plugins:
- github.com/caddy-dns/cloudflare
caddy_docker_environment_variables:
DOMAIN: domain.tld
ACME_EMAIL: [email protected]
CLOUDFLARE_API_TOKEN: token
pre_tasks:
- name: Aktualizacja pamięci podręcznej apt
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- dbrennand.caddy_docker
Przykład - Tailscale
Ten przykład używa artis3n/ansible-role-tailscale, aby zainstalować Tailscale i skonfigurować Caddy do uzyskania certyfikatu od Let's Encrypt dla Twojego węzła Tailscale. Musisz mieć włączone funkcje MagicDNS oraz Certyfikat HTTPS dla Twojego Tailnet.
- name: dbrennand.caddy_docker - Tailscale
hosts: all
vars:
# zmienne roli geerlingguy.pip
pip_install_packages:
- name: docker
# zmienne roli artis3n.tailscale
tailscale_authkey: key
# zmienne roli dbrennand.caddy_docker
caddy_docker_caddyfile: |-
{
email {$ACME_EMAIL}
}
# Tailscale
(tailscale) {
tls {
get_certificate tailscale
}
}
node.{$TAILNET} {
import tailscale
reverse_proxy container:port
}
caddy_docker_extra_volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
caddy_docker_environment_variables:
ACME_EMAIL: [email protected]
TAILNET: domain-alias.ts.net
pre_tasks:
- name: Aktualizacja pamięci podręcznej apt
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- artis3n.tailscale
- dbrennand.caddy_docker
Testy Molecule 🧪
Aby przetestować rolę, użyj molecule: molecule test
Licencja
Ten projekt jest licencjonowany na podstawie licencji MIT - zobacz LICENCJA szczegóły.
Autorzy i Współtwórcy
dbrennand - Autor
ansible-galaxy install dbrennand.caddy_docker