tinyblargon.docker_deploy
Rôle Ansible : déploiement Docker
Rôle Ansible pour déployer une stack (fichier) Docker Compose.
Exigences
Système local
rsync
Système déployé
docker-ce
docker-ce-cli
containerd.io
docker-compose-plugin
oudocker-compose
Variables du Rôle
Nom de la variable | Type | Valeur par défaut | Description |
---|---|---|---|
docker_deploy_source: | chaîne | "docker-deploy" | Le répertoire local contenant le déploiement Docker et le fichier Compose. Ce répertoire est relatif au répertoire principal des playbooks. |
docker_deploy_destination: | chaîne | "/opt/docker-deploy" | Le dossier de destination où le déploiement sera cloné. |
docker_deploy_compose_file: | chaîne | "docker-compose.yml" | Le nom du fichier Docker Compose à lancer. |
docker_deploy_files: | liste | [] | Une liste de fichiers qui doivent être copiés vers docker_deploy_destination: , plus d'informations sur la carte se trouvent dans le chapitre suivant Docker_deploy_files. |
docker_deploy_compatibility: | booléen | vrai | Activer le drapeau --compatibility lors du démarrage du fichier Compose. |
docker_deploy_remove_orphans: | booléen | vrai | Activer le drapeau --remove-orphans lors du démarrage du fichier Compose. |
docker_deploy_build: | booléen | faux | Activer le drapeau --build lorsque des fichiers dans docker_deploy_source: ou docker_deploy_files: ont changé. |
docker_deploy_recreate: | booléen | faux | Activer le drapeau --force-recreate lorsque des fichiers dans docker_deploy_source: ou docker_deploy_files: ont changé. |
docker_deploy_compose_plugin: | booléen | vrai | Indiquer si la commande docker compose ou docker-compose doit être utilisée, vrai pour docker compose , faux pour docker-compose . |
docker_deploy_prune: | liste | ["image"] | Quelles commandes prune doivent être exécutées après un changement dans le déploiement Compose. La valeur peut être une combinaison des options suivantes : "builder" , "container" , "image" , "network" , "system" , "volume" . |
docker_deploy_state: | chaîne | "présent" | Lorsque "présent" , docker_deploy_source: sera synchronisé avec docker_deploy_destination: et le docker_deploy_compose_file: sera lancé. Lorsque "absent" , le docker_deploy_compose_file: dans docker_deploy_destination: sera arrêté. |
docker_deploy_rsync_opts: | liste | ['--exclude="*.example"'] | Spécifier des options rsync supplémentaires en passant un tableau. Tous les dest spécifiés dans docker_deploy_files: seront automatiquement exclus de rsync. |
docker_deploy_show_warnings: | booléen | vrai | Afficher les avertissements de Docker Compose. |
docker_deploy_absent_volume: | booléen | faux | S'applique uniquement lorsque docker_deploy_state: est "absent" . Active le drapeau --volumes lors de l'arrêt du fichier Compose, cela supprimera tous les volumes spécifiés dans le fichier Compose. |
docker_deploy_absent_remove: | booléen | faux | S'applique uniquement lorsque docker_deploy_state: est "absent" . Si vrai , le docker_deploy_destination: sera supprimé. |
Docker_deploy_files
Nom de la variable | Type | Valeur par défaut | Description |
---|---|---|---|
content: | chaîne | "" | Lorsqu'il est utilisé à la place de src , définit le contenu d'un fichier directement à la valeur spécifiée. Fonctionne uniquement lorsque dest est un fichier. Crée le fichier s'il n'existe pas. |
dest: | chaîne | Chemin distant relatif à docker_deploy_destination: où le fichier doit être copié. Si src est un répertoire, cela doit aussi être un répertoire. Si dest est un chemin non existant et que dest se termine par “/” ou si src est un répertoire, dest est créé. Si dest est un chemin relatif, le répertoire de départ est déterminé par l'hôte distant. Si src et dest sont des fichiers, le répertoire parent de dest n'est pas créé et la tâche échoue si cela n'existe pas déjà. Tous les dest seront automatiquement exclus de rsync. |
|
group: | chaîne | "root" | Nom du groupe qui doit posséder l'objet système de fichiers, comme cela serait passé à chown. |
mode: | chaîne | Les permissions du fichier ou répertoire de destination. Documentation Ansible pour plus de détails | |
owner: | chaîne | "root" | Nom de l'utilisateur qui doit posséder l'objet système de fichiers, comme cela serait passé à chown. Spécifier un nom d'utilisateur numérique sera considéré comme un identifiant d'utilisateur et non comme un nom d'utilisateur. Évitez les noms d'utilisateur numériques pour éviter cette confusion. |
src: | chaîne | Chemin local vers un fichier à copier sur le serveur distant. Cela peut être absolu ou relatif. Si le chemin est un répertoire, il est copié récursivement. Dans ce cas, si le chemin se termine par “/”, seuls les contenus à l'intérieur de ce répertoire sont copiés à la destination. Sinon, si cela ne se termine pas par “/”, le répertoire lui-même avec tout son contenu est copié. Ce comportement est similaire à l'outil en ligne de commande rsync. | |
no_log: | booléen | faux | Si vrai , le contenu ne peut pas être enregistré. |
Lorsque content:
et src:
ne sont pas spécifiés, un fichier vide est créé à la destination.
Exemples de Playbooks
Présent
- hosts: all
roles:
- role: tinyblargon.docker_deploy
vars:
docker_deploy_source: "docker-deploy"
docker_deploy_destination: "/opt/docker-deploy"
docker_deploy_compose_file: "docker-compose.yml"
docker_deploy_files:
- dest: ".env"
src: ".env"
- dest: ".secrets/password.txt"
content: "{{ lookup('file', 'password.txt') }}"
owner: "root"
group: "root"
mode: "0600"
no_log: true
docker_deploy_compatibility: true
docker_deploy_remove_orphans: true
docker_deploy_recreate: true
docker_deploy_compose_plugin: false
docker_deploy_prune: ["system"]
docker_deploy_state: "present"
Absent
- hosts: all
roles:
- role: tinyblargon.docker_deploy
vars:
docker_deploy_destination: "/opt/docker-deploy"
docker_deploy_compose_file: "docker-compose.yml"
docker_deploy_compose_plugin: false
docker_deploy_prune: ["system", "volume"]
docker_deploy_state: "absent"
docker_deploy_absent_volume: true
docker_deploy_absent_remove: true
Licence
MIT
Installer
ansible-galaxy install tinyblargon.docker_deploy
Licence
mit
Téléchargements
1.1k
Propriétaire
If the DevOps tooling doesn't exist, I'll write it myself.