Roles Rôle « Docker Applications »
20 septembre 2026 à 22:50Ce rôle est chargé de déployer les applications docker. Que ce soit des conteneurs seuls, des services compose ou des piles swarm.
Tags internes
- docker-files : Mise en place des dossiers et fichiers ;
- docker-image : Construction et mise à disposition d’images ;
- docker-network : Mise en place réseau ;
- docker-container : Mise en place de conteneurs seuls ;
- docker-compose : Mise en place de piles compose ;
- docker-swarm-service : Mise en place de services swarm ;
Traitements spécifiques du jeu de tâches
Variables à l’exécution
Ces variables sont à passer uniquement avec le paramètre -e d’ansible-playbook.
| Variable | Type | Requis | Défaut | Description |
|---|---|---|---|---|
docker_image_rebuild |
Liste de noms | Non | Vide | Liste des images pour lesquels une reconstruction est demandée |
docker_container_recreate |
Liste de noms | Non | Vide | Liste des conteneurs pour lesquels une reconstruction est demandée |
docker_compose_rebuild |
Liste de noms | Non | Vide | Liste des piles compose pour lesquels une reconstruction est demandée |
docker_compose_recreate |
Liste de noms | Non | Vide | Liste des piles compose pour lesquels une reconstruction est demandée |
docker_compose_pull |
Liste de noms | Non | Vide | Liste des piles compose pour lesquels une récupération d’image forcée est demandée |
docker_service_update |
Liste de noms | Non | Vide | Liste des services swarm pour lesquels une mise à jour forcée est demandée |
Remarques :
- Les noms de projet sont, soit celui spécifié, soit le dernier segment du chemin du projet.
Variables à fournir
| Variable | Type | Requis | Défaut | Description |
|---|---|---|---|---|
docker_resources_path |
Chemin | Oui | Chemin de base des ressources | |
docker_query_users |
Liste d’identifiants | Non | Vide | Liste des identifiants d’utilisateurs dont récupérer l’ID |
docker_query_groups |
Liste d’identifiants | Non | Vide | Liste des identifiants de groupes dont récupérer l’ID |
docker_folders |
Liste de folder |
Non | Vide | Liste de dossiers à créer |
docker_files |
Liste de file |
Non | Vide | Liste de fichiers à copier |
docker_templates |
Liste de template |
Non | Vide | Liste de gabarits à générer |
docker_images |
Liste d’objets image |
Non | Vide | Liste d’images à construire |
docker_networks |
Liste d’objets network |
Non | Vide | Liste des réseaux à gérer |
docker_containers |
Liste d’objets container |
Non | Vide | Liste des conteneurs à gérer |
docker_compose_stacks |
Liste d’objets compose |
Non | Vide | Liste de piles compose à gérer |
docker_swarm_services |
Liste d’objets service |
Non | Vide | Liste de services swarm à gérer |
docker_swarm_stacks |
Liste d’objets stack |
Non | Vide | Liste de piles swarm à gérer |
Remarques :
- Les identifiants d’utilisateurs sont accessibles à l’aide de
ansible_facts.getent_passwd.<name>.1; - Les identifiants de groupes sont accessibles à l’aide de
ansible_facts.getent_group.<name>.1.
Type perms
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
mode |
Mode | Non | ‘0755’ ou ‘0644’ | Mode à définir, peut être la valeur preserve sauf pour les dossiers |
owner |
Chaîne ou Entier | Non | root | Utilisateur propriétaire |
group |
chaîne ou Entier | Non | root | Groupe d’accès |
Type folder
Hérite de perms. Il faut s’assurer que le dossier parent existe déjà.
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
path |
Chemin | Oui | Chemin du dossier à créer |
Type file
Hérite de perms. Le chemin source est relatif à docker_resources_path.
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
src |
Chemin | Oui si !content |
Chemin du fichier source | |
content |
Chaîne | Oui si !src |
Contenu du fichier | |
dest |
Chemin | Oui | Chemin du fichier destination | |
no_restart |
Booléen | Non | Faux | Ne pas redémarrer le conteneur détecté |
Type template
Hérite de perms. Le chemin source est relatif à docker_resources_path.
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
src |
Chemin | Oui | Chemin du gabarit source | |
dest |
Chemin | Oui | Chemin du fichier destination | |
no_restart |
Booléen | Non | Faux | Ne pas redémarrer le conteneur détecté |
D’autres valeurs peuvent être spécifiées et accédée par le gabarit sur la variable item.
Type image
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
name |
Identifiant | Oui | Nom de l’image au format [{<repository>|<registry_server>:<port>}/]<name> |
|
path |
Chemin | Oui | Emplace du contexte de construction | |
dockerfile |
Chemin | Non | Absent | Nom et chemin relatif à path du fichier Dockerfile |
labels |
Dictionnaire | Non | Absent | Étiquettes à associer à l’image |
tag |
Identifiant | Non | latest |
Étiquette de version de l’image |
push |
Booléen | Non | Absent | Pousser l’image dans le registre |
platform |
Liste de chaînes | Non | Absent | Plateformes pour lesquelles construire l’image au format <os>[/<arch>[/<variant>]] |
Exemple de plateformes : linux/amd64 linux/arm64
Type network
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
name |
Identifiant | Oui | Nom du réseau | |
attachable |
Booléen | Non | Absent | Indique, si un réseau dans la portée globale autorise les conteneurs hors services à se connecter au réseau |
driver |
Choix | Non | bridge |
Pilote pour le fonctionnement du réseau, voir documentation https://docs.docker.com/engine/network/#drivers |
driver_options |
Dictionnaire | Non | Vide | Options spécifiques du pilote réseau |
ipv4 |
Booléen | Non | Absent | Active ou désactive IPv4 |
ipv6 |
Booléen | Non | Absent | Active ou désactive IPv6 |
ingress |
Booléen | Non | Absent | Active le maillage réseau swarm |
internal |
Booléen | Non | Absent | Restreindre l’accès au réseau |
ipam_driver |
Choix | Non | default |
Pilote de gestion d’adresses IP |
ipam_config |
Liste d’objets ipam |
Non | Absent | Configurations la gestion d’adresses IP |
ipam_options |
Dictionnaire | Non | Absent | Options la gestion d’adresses IP |
labels |
Dictionnaire | Non | Absent | Étiquettes associées au réseau |
scope |
Choix [local|global|swarm] | Oui | Portée du réseau | |
remove |
Booléen | Non | Faux | Retirer le réseau |
Type ipam
Dans une même instance, les adresses doivent être de la même famille.
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
subnet |
Sous-réseau CIDR | Oui | Adresses de sous-réseau affectées au réseau | |
iprange |
Sous-réseau CIDR | Non | Absent | Adresses de sous-réseau affectées aux conteneurs attachés |
gateway |
Adresse IP | Oui | Adresse de la passerelle | |
aux_addresses |
Dictionnaire d’adresses IP | Non | Adresses auxiliaires utilisés par le pilote affectées à des noms pour le DNS |
Type container
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
name |
Identifiant | Oui | Nom du conteneur | |
image |
Étiquette d’image | Oui | Image du conteneur à utiliser | |
capabilities |
Liste de choix | Non | Absent | Permissions noyau à ajouter au conteneur |
command |
Liste d’arguments ou chaîne | Non | Absent | Commande à exécuter si différent de préconfigurée |
cpus |
Décimal | Non | Absent | Nombre maximum de CPU allouables à la tâche, une valeur décimal est prise en charge |
devices |
Liste d’associations | Non | Absent | Association de périphériques, au format <chemin_hôte>:<chemin_conteneur>:<permissions_cgroup> |
entrypoint |
Liste d’arguments ou chaîne | Non | Absent | Point d’entré à exécuter si différent de préconfiguré |
env |
Dictionnaire | Non | Absent | Variables d’environnement injectées au conteneur |
env_file |
Chemin | Non | Absent | Fichier sur la cible d’injection de variables d’environnement au conteneur |
hosts |
Associations de noms et d’ips | Non | Absent | Contenu du fichier hosts. L’ip host-gateway cible l’hôte |
exposed_ports |
Liste d’entiers (1-65535) | Non | Absent | Ports supplémentaires à exposer |
groups |
Liste de groupes ou GID | Non | Absent | Groupes supplémentaire pour l’exécution |
memory |
Entier avec unité (B, K, M, etc.) | Non | Absent | Limite de mémoire du conteneur |
labels |
Dictionnaire | Non | Absent | Étiquettes associées au conteneur |
mounts |
Liste d’objets mount |
Non | Absent | Points de montage dans le conteneur, remplace volumes |
network_mode |
Choix [bridge|host|none|…] | Non | Absent | Mode réseau, par défaut le nom du premier réseau configuré, default si absent |
networks |
Liste d’objets net |
Non | Absent | Réseaux auxquels le conteneur est attaché |
published_ports |
Liste de ports exposés | Non | Absent | Ports à publier, à la syntaxe `[[<host_ip>:]<host_port>:]<container_port> |
pull |
Choix [missing|never|always] | Non | missing | Indique si l’image doit être récupérée |
shm_size |
Entier avec unité (B, K, M, etc.) | Non | Absent | Taille de /dev/shm |
restart |
Choix, cf. commentaire | Non | Absent | Mode de rédémarrage du conteneur |
retries |
Entier | Non | Absent | Nombre maximum d’essai de redémarrage |
user |
Chaîne | Non | Absent | Utilisateur exécutant le conteneur, sous la forme user[:group] où les deux valeurs peuvent être numériques |
Pour restart, les choix sont no, on-failure, always et unless-stopped. Le premier doit être échappé pour ne pas être converti en booléen.
Pour network_mode, les choix supplémentaires sont default, un nom de réseau ou une référence de conteneur par nom ou identifiant, en spécifiant le préfixe container:.
Type mount
Seules les options fréquemment utilisées sont documentées. Pour un conteneur simple, voir la documentation de community.docker.docker_container pour le reste. Pour un service swarm, la documentation de community.docker.docker_swarm_service.
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
read_only |
Booléen | Non | Faux | Montage en lecture seule |
source |
Identifiant ou chemin | Non | Absent | Nom du volume ou chemin sur l’hôte |
target |
Chemin | Oui | Chemin dans le conteneur | |
type |
Choix [volume, bind, etc.] |
Non | *1 | Type de point de montage |
Notes :
volumepour un conteneur simple,bindpour un service swarm.
Type net
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
name |
Identifiant | Oui | Nom du réseau à attacher | |
aliases |
Liste de domaines | Non | Absent | Noms connus du conteneur dans le réseau |
driver_opts |
Dictionnaire | Non | Absent | Options du pilote réseau |
gw_priority |
Entier | Non | Absent | Priorité passerelle |
ipv4_address |
Adresse IPv4 | Non | Absent | IPv4 à affecter |
ipv6_address |
Adresse IPv6 | Non | Absent | IPv6 à affecter |
Type compose
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
files |
Liste de chemins | Non | Vide | Liste des fichiers compose à utiliser à la place de la valeur par défaut |
project_name |
Segment de chemin | Non | Absent | Nom explicite du projet |
project_src |
Chemin | Oui | Chemin absolut du projet |
Remarque : le dossier du projet et les fichiers pertinants doivent tous être préalablement présents.
Type service
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
name |
Identifiant | Oui | Nom du service | |
image |
Étiquette d’image | Oui | Image du conteneur du service à utiliser | |
command |
Liste d’arguments ou chaîne | Non | Absent | Commande à exécuter si différent de préconfigurée |
container_labels |
Dictionnaire | Non | Absent | Étiquettes associées au conteneur |
env |
Dictionnaire | Non | Absent | Variables d’environnement injectées au conteneur du service |
groups |
Liste de groupes ou GID | Non | Absent | Groupes supplémentaire pour l’exécution |
labels |
Dictionnaire | Non | Absent | Étiquettes associées au service |
cpus |
Décimal | Non | Absent | Nombre maximum de CPU allouables à la tâche, une valeur décimal est prise en charge |
memory |
Entier avec unité (B, K, M, etc.) | Non | Absent | Limite de mémoire du conteneur |
mode |
Choix [replicated |
global] |
Non | replicated |
mounts |
Liste d’objets mount |
Non | Absent | Points de montage dans le conteneur du service, remplace volumes |
networks |
Liste d’objets swarm_net |
Non | Absent | Réseaux auxquels le conteneur est attaché |
placement |
Objet placement |
Non | Absent | Contraites de placement et préférences |
publish |
Objet swarm_port |
Non | Absent | Ports à publier |
replicas |
Entier | Non | -1 | Nombre de réplicas du service |
user |
Chaîne | Non | Absent | Utilisateur exécutant le conteneur, nom ou identifiant |
Type swarm_net
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
name |
Identifiant | Oui | Nom du réseau à attacher | |
aliases |
Liste de domaines | Non | Absent | Noms connus du conteneur dans le réseau |
driver_opts |
Dictionnaire | Non | Absent | Options du pilote réseau |
Type placement
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
constraints |
Liste de chaînes | Non | Absent | Contraintes de placement |
preferences |
Dictionnaire | Non | Absent | Préférences de placement |
replicas_max_per_node |
Entier | Non | Absent | Limite par nœud |
Exemple de contraintes :
node.hostname==<host>;node.labels.<key>!=<value>.
Exemple de préférences :
- Pour déployer de manière équilibrée en groupant par valeur de l’étiquette
<key>:spread=node.labels.<key>.
Remarque : le groupement fait aussi un groupe des nœuds qui ne possèdent pas l’étiquette ou valeur vide.
Type swarm_port
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
mode |
Choix [ingress |
host] |
Non | ingress |
protocol |
Choix [tcp |
udp] |
Non | tcp |
published_port |
Entier 1-65535 | Non | Absent | Port visible depuis l’extérieur |
target_port |
Entier 1-65535 | Oui | Port dans le conteneur |
Type stack
| Propriété | Type | Requis | Défaut | Description |
|---|---|---|---|---|
compose |
Liste | Oui | Liste de chemins vers les fichiers de définition ou du contenu d’une définition compose | |
name |
Identifiant | Oui | Nom de la pile |
Arborescence des ressources externes
Le role utilise des ressources externes dont les chemins sont préfixés par
docker_resources_path.