dbrennand.caddy_docker
Ansible Rolle: dbrennand.caddy_docker
Ansible Rolle zur Bereitstellung von Caddy in einem Docker-Container.
Anforderungen
community.docker
Ansible Sammlung:ansible-galaxy collection install community.docker
Rollenspezifische Variablen
caddy_docker_state: present
Verwaltet den Zustand der von dieser Rolle bereitgestellten Ressourcen. Auf absent
setzen, um die Caddy-Verzeichnisse (Daten und Konfiguration), die Caddyfile, Docker-Netzwerk(e), das Bild und den Container zu entfernen.
caddy_docker_config_directory:
path: ~/.config/caddy/
# Optional
# owner: Eigentümer
# group: Gruppe
# mode: 0755
caddy_docker_data_directory:
path: ~/.local/share/caddy/
# ...
Absoluter Pfad zu den Caddy-Config- und Datenverzeichnissen, die erstellt werden sollen. Diese werden als Bind-Mounts am Container angehängt.
caddy_docker_caddyfile: |-
localhost
respond "Hallo, Welt!"
Inhalt der Caddyfile, die verwendet wird, um Caddy zu konfigurieren.
caddy_docker_caddyfile_file:
path: ~/.config/Caddyfile
# ...
Absoluter Pfad zur Caddyfile, die erstellt werden soll. Diese wird als Bind-Mount am Container angehängt.
caddy_docker_image: caddy:2.7.4-alpine
caddy_docker_builder_image: caddy:2.7.4-builder
Containerbild Repositories, Namen und Tags, die verwendet werden, um Caddy als Container bereitzustellen. Die Variable caddy_docker_builder_image
wird nur verwendet, wenn caddy_docker_plugins
befüllt ist.
caddy_docker_builder_directory:
path: /tmp/caddy-builder/
# ...
Absoluter Pfad für das Verzeichnis, das als Container-Baukontext verwendet wird. Diese Variable wird nur verwendet, wenn caddy_docker_plugins
befüllt ist. Sie können diese Variable überschreiben, wenn Sie Ihre eigene Dockerfile-Vorlage mitbringen und Dateien während des Bauvorgangs des Caddy-Containers einfügen möchten.
caddy_docker_builder_template: dockerfile.j2
# Verwendung des Lookup-Plugins
# caddy_docker_builder_template: "{{ lookup('template', 'templates/dockerfile.custom.j2') }}"
Dockerfile-Vorlage, die verwendet wird, um den Caddy-Container zu bauen. Diese Variable wird nur verwendet, wenn caddy_docker_plugins
befüllt ist.
caddy_docker_builder_force: false
Ob der Caddy-Container neu gebaut werden soll oder nicht. Diese Variable wird nur verwendet, wenn caddy_docker_plugins
befüllt ist.
caddy_docker_plugins: []
# Beispiel
# caddy_docker_plugins:
# - github.com/caddy-dns/cloudflare
# - github.com/lucaslorentz/caddy-docker-proxy/v2
Liste der Plugins, die im Caddy-Container enthalten sein sollen.
caddy_docker_networks:
- name: caddy
Namen der Docker-Netzwerke, die erstellt und am Caddy-Container angehängt werden sollen.
caddy_docker_network_mode: default
Docker-Netzwerkmodus, der für den Caddy-Container verwendet werden soll. Die Variablen caddy_docker_networks
, caddy_docker_ports
und caddy_docker_exposed_ports
haben keinen Einfluss, wenn diese Variable auf host
gesetzt ist.
caddy_docker_command: caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
Befehl zum Starten des Caddy-Containers. Sie möchten dies möglicherweise überschreiben, wenn Sie Plugins verwenden.
caddy_docker_restart_policy: unless-stopped
Neustart-Richtlinie für den Caddy-Container.
caddy_docker_ports:
- 80:80
- 443:443
- "443:443/udp"
caddy_docker_exposed_ports: []
# Beispiel
# caddy_docker_exposed_ports:
# - 9000
Ports, die im Caddy-Container freigegeben werden sollen.
caddy_docker_etc_hosts: {}
# Beispiel
# caddy_docker_etc_hosts:
# host.docker.internal: host-gateway
Host-zu-IP-Zuordnungen, die in die /etc/hosts
-Datei des Caddy-Containers eingefügt werden sollen.
caddy_docker_extra_volumes: []
# Beispiel
# caddy_docker_extra_volumes:
# - /site:/srv
Zusätzliche Volumes, die am Caddy-Container angehängt werden sollen.
caddy_docker_environment_variables: {}
# Beispiel
# caddy_docker_environment_variables:
# DOMAIN: example.com
Umgebungsvariablen, die auf den Caddy-Container angewendet werden sollen.
Abhängigkeiten
Keine.
Beispiel Playbook
- name: dbrennand.caddy_docker
hosts: all
vars:
pip_install_packages:
- name: docker
pre_tasks:
- name: apt-Cache aktualisieren
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- dbrennand.caddy_docker
Beispiel - Cloudflare DNS-01 Herausforderung
Dieses Beispiel verwendet das Cloudflare-Modul für Caddy, um Zertifikate (einschließlich Wildcards) von Let's Encrypt für eine von Cloudflare verwaltete Domain zu erhalten. Dies ist nützlich, wenn Sie Zertifikate erhalten möchten, ohne Port 80 (HTTP) ins Internet zu öffnen.
Sie müssen ein API-Token generieren, damit Caddy sich beim Cloudflare API authentifizieren kann und einen TXT-Eintrag für die DNS-01-Herausforderung erstellt:
Gehen Sie zur Cloudflare-Dashboard-Profilseite.
Wählen Sie links API-Token > Token erstellen.
Wählen Sie die API-Token-Vorlage „Bearbeiten der Zonendaten“.
Ändern Sie den Tokennamen nach Ihren Wünschen.
Unter Berechtigungen wählen Sie + Weitere hinzufügen und fügen Sie die Berechtigung hinzu:
Zone / Zone / Lesen
.Unter Zonenressourcen fügen Sie Ihre Zone hinzu:
Einbeziehen / Bestimmte Zone / example.tld
.Optional - Konfigurieren Sie die Client-IP-Adressfilterung, falls gewünscht.
Klicken Sie auf Fortfahren zur Zusammenfassung > Token erstellen.
- name: dbrennand.caddy_docker - Cloudflare
hosts: all
vars:
# Variablen der Rolle geerlingguy.pip
pip_install_packages:
- name: docker
# Variablen der Rolle dbrennand.caddy_docker
caddy_docker_caddyfile: |-
{
email {$ACME_EMAIL}
}
# Cloudflare DNS-01 Herausforderung
(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: apt-Cache aktualisieren
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- dbrennand.caddy_docker
Beispiel - Tailscale
Dieses Beispiel verwendet artis3n/ansible-role-tailscale, um Tailscale zu installieren und Caddy zu konfigurieren, um ein Zertifikat von Let's Encrypt für Ihren Tailscale-Knoten zu erhalten. Sie müssen die Funktionen MagicDNS und HTTPS-Zertifikat für Ihr Tailnet aktivieren.
- name: dbrennand.caddy_docker - Tailscale
hosts: all
vars:
# Variablen der Rolle geerlingguy.pip
pip_install_packages:
- name: docker
# Variablen der Rolle artis3n.tailscale
tailscale_authkey: key
# Variablen der Rolle 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: apt-Cache aktualisieren
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- artis3n.tailscale
- dbrennand.caddy_docker
Molekül-Tests 🧪
Um die Rolle zu testen, verwenden Sie Molecule: molecule test
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE für weitere Details.
Autoren & Mitwirkende
dbrennand - Autor
ansible-galaxy install dbrennand.caddy_docker