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