dbrennand.caddy_docker
Ansible Role : dbrennand.caddy_docker
Rôle Ansible pour déployer Caddy dans un conteneur Docker.
Exigences
Collection Ansible
community.docker
:ansible-galaxy collection install community.docker
Variables du rôle
caddy_docker_state: present
Gérer l'état des ressources déployées par ce rôle. Mettre à absent
pour supprimer les répertoires Caddy (données et configuration), Caddyfile, réseau(s) Docker, image et conteneur.
caddy_docker_config_directory:
path: ~/.config/caddy/
# Optionnel
# owner: propriétaire
# group: groupe
# mode: 0755
caddy_docker_data_directory:
path: ~/.local/share/caddy/
# ...
Chemin absolu pour les répertoires de configuration et de données Caddy à créer. Attaché au conteneur en tant que montages de liaison.
caddy_docker_caddyfile: |-
localhost
respond "Bonjour, le monde!"
Contenu du Caddyfile utilisé pour configurer Caddy.
caddy_docker_caddyfile_file:
path: ~/.config/Caddyfile
# ...
Chemin absolu vers le Caddyfile à créer. Attaché au conteneur en tant que montage de liaison.
caddy_docker_image: caddy:2.7.4-alpine
caddy_docker_builder_image: caddy:2.7.4-builder
Dépôts d'images de conteneur, noms et tags utilisés pour déployer Caddy en tant que conteneur. La variable caddy_docker_builder_image
n'est utilisée que lorsque caddy_docker_plugins
est renseigné.
caddy_docker_builder_directory:
path: /tmp/caddy-builder/
# ...
Chemin absolu pour le répertoire utilisé comme contexte de construction du conteneur. Cette variable est seulement utilisée lorsque caddy_docker_plugins
est renseigné. Vous pouvez vouloir remplacer cette variable si vous utilisez votre propre modèle de dockerfile et souhaitez inclure des fichiers pendant le processus de construction du conteneur Caddy.
caddy_docker_builder_template: dockerfile.j2
# Utilisation du plugin lookup
# caddy_docker_builder_template: "{{ lookup('template', 'templates/dockerfile.custom.j2') }}"
Modèle Dockerfile utilisé pour construire le conteneur Caddy. Cette variable est seulement utilisée lorsque caddy_docker_plugins
est renseigné.
caddy_docker_builder_force: false
Pour forcer ou non la reconstruction du conteneur Caddy. Cette variable est seulement utilisée lorsque caddy_docker_plugins
est renseigné.
caddy_docker_plugins: []
# Exemple
# caddy_docker_plugins:
# - github.com/caddy-dns/cloudflare
# - github.com/lucaslorentz/caddy-docker-proxy/v2
Liste des plugins à inclure dans le conteneur Caddy.
caddy_docker_networks:
- name: caddy
Noms des réseaux Docker à créer et à attacher au conteneur Caddy.
caddy_docker_network_mode: default
Mode de réseau Docker à utiliser pour le conteneur Caddy. Les variables caddy_docker_networks
, caddy_docker_ports
et caddy_docker_exposed_ports
n'ont aucun effet lorsque cette variable est définie sur host
.
caddy_docker_command: caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
Commande pour démarrer le conteneur Caddy. Vous pouvez vouloir remplacer cela lorsque vous utilisez des plugins.
caddy_docker_restart_policy: unless-stopped
Politique de redémarrage pour le conteneur Caddy.
caddy_docker_ports:
- 80:80
- 443:443
- "443:443/udp"
caddy_docker_exposed_ports: []
# Exemple
# caddy_docker_exposed_ports:
# - 9000
Ports à exposer sur le conteneur Caddy.
caddy_docker_etc_hosts: {}
# Exemple
# caddy_docker_etc_hosts:
# host.docker.internal: host-gateway
Correspondances hôte à IP à placer dans le fichier /etc/hosts
du conteneur Caddy.
caddy_docker_extra_volumes: []
# Exemple
# caddy_docker_extra_volumes:
# - /site:/srv
Volumes supplémentaires à attacher au conteneur Caddy.
caddy_docker_environment_variables: {}
# Exemple
# caddy_docker_environment_variables:
# DOMAIN: example.com
Variables d'environnement à appliquer au conteneur Caddy.
Dépendances
Aucune.
Exemple de Playbook
- name: dbrennand.caddy_docker
hosts: all
vars:
pip_install_packages:
- name: docker
pre_tasks:
- name: Mettre à jour le cache apt
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- dbrennand.caddy_docker
Exemple - Challenge DNS-01 Cloudflare
Cet exemple utilise le module Cloudflare pour Caddy pour obtenir des certificats (y compris des certificats wildcard) de Let's Encrypt pour un domaine géré par Cloudflare. Cela est utile lorsque vous souhaitez obtenir des certificats sans ouvrir le port 80 (HTTP) à Internet.
Vous devez générer un jeton API pour que Caddy s'authentifie à l'API Cloudflare et crée un enregistrement TXT pour le challenge DNS-01 :
Allez sur la page de profil du tableau de bord Cloudflare.
À gauche, sélectionnez Jetons API > Créer un jeton.
Sélectionnez le modèle de jeton API nommé Modifier zone DNS.
Modifiez le Nom du jeton à votre convenance.
Dans Permissions, sélectionnez + Ajouter plus et ajoutez la permission :
Zone / Zone / Lecture
.Dans Ressources de la zone, incluez votre zone :
Inclure / Zone spécifique / example.tld
.Optionnel - Configurez la filtrage par adresse IP du client si souhaité.
Cliquez sur Continuer vers le résumé > Créer le jeton.
- name: dbrennand.caddy_docker - Cloudflare
hosts: all
vars:
# Variables du rôle geerlingguy.pip
pip_install_packages:
- name: docker
# Variables du rôle dbrennand.caddy_docker
caddy_docker_caddyfile: |-
{
email {$ACME_EMAIL}
}
# Challenge 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: Mettre à jour le cache apt
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- dbrennand.caddy_docker
Exemple - Tailscale
Cet exemple utilise artis3n/ansible-role-tailscale pour installer Tailscale et configurer Caddy afin d'obtenir un certificat de Let's Encrypt pour votre nœud Tailscale. Vous devez avoir les fonctionnalités MagicDNS et Certificat HTTPS activées pour votre Tailnet.
- name: dbrennand.caddy_docker - Tailscale
hosts: all
vars:
# Variables du rôle geerlingguy.pip
pip_install_packages:
- name: docker
# Variables du rôle artis3n.tailscale
tailscale_authkey: key
# Variables du rôle 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: Mettre à jour le cache apt
ansible.builtin.apt:
update_cache: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- artis3n.tailscale
- dbrennand.caddy_docker
Tests Molecule 🧪
Pour tester le rôle, utilisez molecul: molecule test
Licence
Ce projet est sous licence MIT - voir le LICENSE pour les détails.
Auteurs & Contributeurs
dbrennand - Auteur
ansible-galaxy install dbrennand.caddy_docker