bodsch.docker
Rôle Ansible : docker
Ce rôle configurera et installera complètement dockerd.
J'ai transféré ce rôle vers sa propre collection.
À l'avenir, je n'accepterai ni ne traiterai d'autres demandes de tirage ou problèmes ici.
Veuillez utiliser la collection liée à partir de maintenant !
Exigences et dépendances
Collections Ansible
ansible-galaxy collection install bodsch.core
ou
ansible-galaxy collection install --requirements-file collections.yml
- Connectivité au dépôt du paquet docker-ce repository
Systèmes d'exploitation
Testé sur
- ArchLinux
- ArtixLinux
- Basé sur Debian
- Debian 10 / 11
- Ubuntu 20.04 / 22.04
Les systèmes basés sur RedHat ne sont plus officiellement pris en charge ! Ils peuvent fonctionner, mais ce n'est pas garanti.
Variables du rôle
Les variables suivantes peuvent être utilisées pour personnaliser l'installation de Docker :
## Choisir le statut d'activation du canal du dépôt docker pour CentOS
docker_repo:
channel:
stable_enabled: true
test_enabled: false
nightly_enabled: false
## État du paquet (présent, absent, etc.)
docker_state: present
## Le démon Docker doit-il démarrer au démarrage ?
docker_service:
enable: true
## nom du service Docker
name: docker
## Installer docker-compose dans la version
docker_compose: {}
# par exemple :
# docker_compose:
# install: true
# version: 1.29.2
docker_users: []
docker_plugins: []
docker_client_config: []
docker_config: {}
docker_config_diff: true
docker_python_packages: []
Lié au proxy
Le démon Docker doit-il utiliser un proxy pour les connexions sortantes ?
docker_proxy:
enabled: false
## liste des variables d'environnement à définir (commenter celles dont vous n'avez pas besoin)
env:
- "HTTP_PROXY=http://proxy.example.com:80/"
- "HTTP_PROXY=https://proxy.example.com:443/"
- "NO_PROXY=localhost,127.0.0.1,internalhub.example.com"
Configuration du client Docker
Activer l'authentification pour le registre Docker.
Il est possible de créer une configuration pour différents utilisateurs.
Le mot de passe stocké ici est encodé en base64 et n'est pas chiffré !
La création d'une chaîne correspondante peut être effectuée comme suit :
echo "jenkins$robot:rubbel-die-katz-du-dummschwätzer1" | base64
amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
docker_client_config:
## l'emplacement où nous devons pousser la configuration du client
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
Alternativement, vous pouvez également entrer votre nom d'utilisateur
et mot de passe
.
Le module Ansible créera une chaîne valide encodée en base64 à partir de cela.
docker_client_config:
## l'emplacement où nous devons pousser la configuration du client
- location: "/var/tmp/foo/config.json"
enabled: false
auths:
"test.tld":
username: "FOO-was-sonst"
passwort: "ja-toll-schon-wieder-alles-scheisse!"
Depuis la version 3.1.0, il est également possible de configurer le format de sortie de docker ps
ou docker image
.
Ici, les paramètres fournis doivent être définis comme une liste :
docker_client_config:
## l'emplacement où nous devons pousser la configuration du client
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
formats:
ps:
- ".ID"
- ".Names"
- ".Status"
- ".Labels"
- ".RunningFor"
- ".Ports"
images:
- ".ID"
- ".Size"
- ".Repository"
- ".Tag"
- ".CreatedAt"
Options de configuration par défaut de dockerd
Options actuellement prises en charge :
options | type | par défaut | description |
---|---|---|---|
authorization_plugins |
list |
[] |
|
bip |
string |
- |
Spécifiez l'adresse IP du pont réseau |
bridge |
string |
- |
Connecter les conteneurs à un pont réseau |
data_root |
string |
/var/lib/docker |
Répertoire racine de l'état persistant de Docker |
debug |
bool |
false |
Activer le mode debug |
default_gateway |
string |
- |
Adresse IPv4 de la passerelle par défaut du conteneur |
default_gateway_v6 |
string |
- |
Adresse IPv6 de la passerelle par défaut du conteneur |
default_shm_size |
string |
- |
Taille shm par défaut pour les conteneurs (par défaut 64MiB ) |
default_ulimits |
dict |
{} |
Ulimits par défaut pour les conteneurs (par défaut []) |
dns |
list |
[] |
Serveur DNS à utiliser |
dns_opts |
list |
[] |
Options DNS à utiliser |
dns_search |
list |
[] |
Domaines de recherche DNS à utiliser |
experimental |
bool |
false |
Activer les fonctionnalités expérimentales |
fixed_cidr |
string |
- |
Sous-réseau IPv4 pour IP fixes |
fixed_cidr_v6 |
string |
- |
Sous-réseau IPv6 pour IP fixes |
group |
group |
docker |
Groupe pour le socket unix |
hosts |
list |
[] |
Socket(s) du démon auxquels se connecter |
insecure_registries |
list |
[] |
Activer la communication avec des registres non sécurisés |
ip |
string |
0.0.0.0 |
IP par défaut lorsqu'on lie les ports des conteneurs |
ip_forward |
bool |
true |
Activer net.ipv4.ip_forward (par défaut vrai) |
ip_masq |
bool |
true |
Activer le masquage d'IP (par défaut vrai) |
iptables |
bool |
true |
Activer l'ajout de règles iptables (par défaut vrai) |
ip6tables |
bool |
false |
Activer l'ajout de règles ip6tables (par défaut faux) |
ipv6 |
bool |
false |
Activer le réseau IPv6 |
labels |
list |
[] |
Définir des étiquettes clé=valeur pour le démon |
log_driver |
string |
json-file |
Pilote par défaut pour les journaux de conteneurs |
log_level |
string |
info |
Définir le niveau de journalisation (debug ,info ,warn ,error ,fatal ) |
log_opts |
dict |
{} |
Options du pilote de journal par défaut pour les conteneurs |
max_concurrent_downloads |
int |
3 |
Définir le maximum de téléchargements simultanés pour chaque tirage |
max_concurrent_uploads |
int |
5 |
Définir le maximum de téléchargements simultanés pour chaque envoi |
max_download_attempts |
int |
5 |
Définir le maximum de tentatives de téléchargement pour chaque tirage |
metrics_addr |
string |
- |
Définir l'adresse et le port par défaut pour servir l'API des métriques |
oom_score_adjust |
int |
-500 |
Définir le oom_score_adj pour le démon (par défaut -500) |
pidfile |
string |
/var/run/docker.pid |
Chemin à utiliser pour le fichier PID du démon (par défaut "/var/run/docker.pid") |
raw_logs |
bool |
false |
Horodatages complets sans coloration ANSI |
registry_mirrors |
list |
[] |
Miroir de registre Docker préféré |
seccomp_profile |
string |
- |
Chemin vers le profil seccomp |
selinux_enabled |
bool |
false |
Activer le support selinux |
shutdown_timeout |
int |
15 |
Définir le délai d'attente par défaut pour l'arrêt |
storage_driver |
string |
overlay2 |
Pilote de stockage à utiliser (aufs , devicemapper , btrfs , zfs , overlay , overlay2 , fuse-overlayfs ) |
storage_opts |
list |
[] |
Options du pilote de stockage |
tls.verify |
bool |
false |
Utiliser TLS et vérifier le distant |
tls.ca_cert |
string |
~/.docker/ca.pem |
Trust certs signés uniquement par ce CA (par défaut "~/.docker/ca.pem") |
tls.cert |
string |
~/.docker/cert.pem |
Chemin vers le fichier de certificat TLS (par défaut "~/.docker/cert.pem") |
tls.key |
string |
~/.docker/key.pem |
Chemin vers le fichier de clé TLS (par défaut "~/.docker/key.pem") |
Exemples
docker_config:
log_driver: ""
log_opts: {}
# env: "os,customer"
# "max-file": "5"
# "max-size": "10m"
max_concurrent_downloads: 3
max_concurrent_uploads: 5
debug: false
log_level: ""
bridge: ""
bip: "172.16.0.1/24"
fixed_cidr: "172.16.0.0/24"
fixed_cidr_v6: ""
default_gateway: ""
default_gateway_v6: ""
selinux_enabled: false
experimental: false
ip: "0.0.0.0"
group: "{{ docker_group }}"
insecure_registries: []
Lors de la création de la configuration, une différence par rapport à la version originale peut être créée et affichée en option.
Pour ce faire, la variable docker_config_diff
doit être définie sur true
.
Il y a plus d'exemples dans les tests de molécule :
Options docker_users
Ajoute un utilisateur existant au groupe docker
.
De plus, il tente de définir les droits d'accès au socket Docker à l'aide de setfacl
.
docker_users:
- jenkins
Options docker_plugins
Installer et activer des plugins personnalisés.
(Actuellement uniquement testé avec Loki !)
docker_plugins:
- alias: loki
source: grafana/loki-docker-driver
version: 2.7.0
state: present
Support Python
Certains des modules de ce rôle nécessitent des extensions Python appropriées.
Ces derniers temps, il y a eu quelques incompatibilités, c'est pourquoi ce point est maintenant également configurable.
La configuration par défaut est la suivante :
docker_python_packages:
- name: docker
- name: requests
- name: urllib3
Si d'autres versions de modules pip sont installées ici, vous pouvez écraser ces valeurs par défaut.
Il est possible d'ajouter des versions à chaque module :
docker_python_packages:
- name: docker
version: 6.1.1
Si une version est spécifiée, une tentative sera faite pour installer exactement cette version.
Cependant, il est également possible d'influencer ce comportement via compare_direction
.
docker_python_packages:
- name: docker
compare_direction: ">"
version: 6.0.0
Ou de définir une fenêtre correspondante via versions
:
docker_python_packages:
- name: docker
- name: requests
versions:
- ">= 2.27.0"
- "< 2.29.0"
- name: urllib3
versions:
- ">= 1.26.0"
- "< 2.0.0"
Exemples
Installer la dernière version stable de Docker sur votre serveur CentOS local
- hosts: localhost
roles:
- role: docker
Installer la dernière version edge de Docker sur votre serveur CentOS local
- hosts: localhost
vars:
docker_repo:
channel:
nightly_enabled: true
roles:
- role: docker
Playbook avancé avec diverses variables appliquées
- hosts: localhost
vars:
docker_config:
# stocker les conteneurs/images Docker dans /opt/docker
data_root: /opt/docker
# changer le sous-réseau bridge par défaut de Docker
bip: 172.16.77.77/24
# définir le pilote de journal par défaut sur journald
log_driver: journald
# activer le mode expérimental
experimental: true
# exposer l'API Docker via le fichier socket et TCP
hosts:
- unix:///var/run/docker.sock
- tcp://0.0.0.0:2376
# définir les domaines de recherche DNS par défaut
dns_search:
- lab1.linuxctl.com
- lab2.linuxctl.com
# configurer les options de journalisation
log_opts:
"max-size": 10m
"max-file": "3"
labels: molecule
env: "os,customer"
roles:
- role: docker
Auteur et licence
Rôle
docker
original écrit par :- George Bolo | linuxctl.com
Modifié par :
- Bodo Schulz
Licence
MIT
LOGICIEL GRATUIT, OUI !
install and configure docker on various linux systems
ansible-galaxy install bodsch.docker