Ce 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 ;
  • Nom : Description ;

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_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

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

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

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
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
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
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>
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.

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 :

  1. volume pour un conteneur simple, bind pour 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.