bodsch.docker
Ansible Rolle: docker
Diese Rolle konfiguriert und installiert dockerd vollständig.
Ich habe diese Rolle in eine eigene Sammlung übertragen.
Zukünftig werde ich hier keine Pull-Requests oder Probleme mehr annehmen oder bearbeiten.Bitte verwendet ab jetzt die verlinkte Sammlung!
Anforderungen & Abhängigkeiten
Ansible Sammlungen
ansible-galaxy collection install bodsch.core
oder
ansible-galaxy collection install --requirements-file collections.yml
- Verbindung zum docker-ce Paket Repository
Betriebssysteme
Getestet auf
- ArchLinux
- ArtixLinux
- Debian-basiert
- Debian 10 / 11
- Ubuntu 20.04 / 22.04
RedHat-basierte Systeme werden nicht mehr offiziell unterstützt! Funktioniert möglicherweise, muss aber nicht.
Rollenspezifische Variablen
Die folgenden Variablen können verwendet werden, um die Docker-Installation anzupassen:
## Wählen Sie den Status des CentOS Docker Repo-Kanals
docker_repo:
channel:
stable_enabled: true
test_enabled: false
nightly_enabled: false
## Status des Pakets (vorhanden, nicht vorhanden usw.)
docker_state: present
## Soll der Docker-Daemon beim Starten aktiviert werden?
docker_service:
enable: true
## Name des Docker-Dienstes
name: docker
## Docker-Compose in welcher Version installieren
docker_compose: {}
# als Beispiel:
# docker_compose:
# install: true
# version: 1.29.2
docker_users: []
docker_plugins: []
docker_client_config: []
docker_config: {}
docker_config_diff: true
docker_python_packages: []
Proxy-bezogen
Soll der Docker-Daemon einen Proxy für ausgehende Verbindungen verwenden?
docker_proxy:
enabled: false
## Liste der Umgebungsvariablen, die wir setzen sollten (kommentieren Sie die aus, die Sie nicht benötigen)
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"
Docker-Client-Konfiguration
Aktivieren Sie die Authentifizierung für das Docker-Registry.
Hier ist es möglich, eine Konfiguration für verschiedene Benutzer zu erstellen.
Das hier gespeicherte Passwort ist base64-kodiert und nicht verschlüsselt!
Die Erstellung eines entsprechenden Strings kann wie folgt erfolgen:
echo "jenkins$robot:rubbel-die-katz-du-dummschwätzer1" | base64
amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
docker_client_config:
## Der Ort, an dem wir die Client-Konfiguration aufspielen sollten
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
Alternativ können Sie auch Ihren Benutzernamen
und Passwort
eingeben.
Das Ansible-Modul erstellt daraus einen gültigen, base64-kodierten String.
docker_client_config:
## Der Ort, an dem wir die Client-Konfiguration aufspielen sollten
- location: "/var/tmp/foo/config.json"
enabled: false
auths:
"test.tld":
username: "FOO-was-sonst"
passwort: "ja-toll-schon-wieder-alles-scheisse!"
Seit Version 3.1.0 ist es auch möglich, das Ausgabeformat von docker ps
oder docker image
zu konfigurieren.
Hier müssen die festgelegten Parameter als Liste definiert werden:
docker_client_config:
## Der Ort, an dem wir die Client-Konfiguration aufspielen sollten
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVuan2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
formats:
ps:
- ".ID"
- ".Names"
- ".Status"
- ".Labels"
- ".RunningFor"
- ".Ports"
images:
- ".ID"
- ".Size"
- ".Repository"
- ".Tag"
- ".CreatedAt"
Standard-Dockerd-Konfigurationsoptionen
Aktuell unterstützte Optionen:
Optionen | Typ | Standard | Beschreibung |
---|---|---|---|
authorization_plugins |
list |
[] |
|
bip |
string |
- |
Geben Sie die IP des Netzwerkbrückes an |
bridge |
string |
- |
Container mit einem Netzwerk-Bereich verbinden |
data_root |
string |
/var/lib/docker |
Root-Verzeichnis des persistierenden Docker-Zustands |
debug |
bool |
false |
Debug-Modus aktivieren |
default_gateway |
string |
- |
Standard-Gateway IPv4-Adresse für Container |
default_gateway_v6 |
string |
- |
Standard-Gateway IPv6-Adresse für Container |
default_shm_size |
string |
- |
Standard-Speichergröße für Container (Standard 64MiB ) |
default_ulimits |
dict |
{} |
Standard-Ulimits für Container (Standard []) |
dns |
list |
[] |
Zu verwendender DNS-Server |
dns_opts |
list |
[] |
Zu verwendende DNS-Optionen |
dns_search |
list |
[] |
Zu verwendende DNS-Suchdomänen |
experimental |
bool |
false |
Experimentelle Funktionen aktivieren |
fixed_cidr |
string |
- |
IPv4-Subnetz für feste IPs |
fixed_cidr_v6 |
string |
- |
IPv6-Subnetz für feste IPs |
group |
group |
docker |
Gruppe für den Unix-Socket |
hosts |
list |
[] |
Daemon-Socket(s), zu denen verbunden werden soll |
insecure_registries |
list |
[] |
Unsichere Registry-Kommunikation aktivieren |
ip |
string |
0.0.0.0 |
Standard-IP beim Binden von Container-Ports |
ip_forward |
bool |
true |
Aktivieren von net.ipv4.ip_forward (Standard: true) |
ip_masq |
bool |
true |
IP-Masquerading aktivieren (Standard: true) |
iptables |
bool |
true |
Hinzufügen von iptables-Regeln aktivieren (Standard: true) |
ip6tables |
bool |
false |
Hinzufügen von ip6tables-Regeln aktivieren (Standard: false) |
ipv6 |
bool |
false |
IPv6-Netzwerk aktivieren |
labels |
list |
[] |
Schlüssel=Wert-Labels für den Daemon festlegen |
log_driver |
string |
json-file |
Standardtreiber für Container-Logs |
log_level |
string |
info |
Festlegen des Protokollierungsniveaus (debug , info , warn , error , fatal ) |
log_opts |
dict |
{} |
Standard-Logtreiberoptionen für Container |
max_concurrent_downloads |
int |
3 |
Maximale gleichzeitige Downloads für jeden Pull festlegen |
max_concurrent_uploads |
int |
5 |
Maximale gleichzeitige Uploads für jeden Push festlegen |
max_download_attempts |
int |
5 |
Maximale Downloadversuche für jeden Pull festlegen |
metrics_addr |
string |
- |
Standardadresse und -port zum Bereitstellen der Metriken-API festlegen |
oom_score_adjust |
int |
-500 |
OOM-Wert des Daemons festlegen (Standard: -500) |
pidfile |
string |
/var/run/docker.pid |
Pfad zur Verwendung für die Daemon-PID-Datei (Standard: "/var/run/docker.pid") |
raw_logs |
bool |
false |
Vollständige Zeitstempel ohne ANSI-Farbcodierung |
registry_mirrors |
list |
[] |
Bevorzugter Docker-Registry-Spiegel |
seccomp_profile |
string |
- |
Pfad zum Seccomp-Profil |
selinux_enabled |
bool |
false |
Aktivieren von SELinux-Unterstützung |
shutdown_timeout |
int |
15 |
Standard-Zeitüberschreitung für Herunterfahren festlegen |
storage_driver |
string |
overlay2 |
Speichertreiber, der verwendet werden soll (aufs , devicemapper , btrfs , zfs , overlay , overlay2 , fuse-overlayfs ) |
storage_opts |
list |
[] |
Speichertreiberoptionen |
tls.verify |
bool |
false |
TLS verwenden und den Remote-Server überprüfen |
tls.ca_cert |
string |
~/.docker/ca.pem |
Nur von dieser CA signierte Zertifikate vertrauen (Standard: "~/.docker/ca.pem") |
tls.cert |
string |
~/.docker/cert.pem |
Pfad zur TLS-Zertifizierungsdatei (Standard: "~/.docker/cert.pem") |
tls.key |
string |
~/.docker/key.pem |
Pfad zur TLS-Schlüsseldatei (Standard: "~/.docker/key.pem") |
Beispiele
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: []
Bei der Erstellung der Konfiguration kann optional ein Unterschied zur Originalversion erstellt und ausgegeben werden.
Hierfür muss die Variable docker_config_diff
auf true
gesetzt werden.
Es gibt weitere Beispiele in den Molekül-Tests:
docker_users Optionen
Fügt einen existierenden Benutzer zur docker
Gruppe hinzu.
Darüber hinaus wird versucht, die Zugriffsrechte auf den Docker-Socket mithilfe von setfacl
zu setzen.
docker_users:
- jenkins
docker_plugins Optionen
Installiert und aktiviert benutzerdefinierte Plugins.
(Aktuell nur getestet mit Loki!)
docker_plugins:
- alias: loki
source: grafana/loki-docker-driver
version: 2.7.0
state: present
Python Unterstützung
Einige Module in dieser Rolle erfordern geeignete Python-Erweiterungen.
In letzter Zeit gab es einige Inkompatibilitäten, weshalb dieser Punkt jetzt auch konfigurierbar ist.
Die Standardkonfiguration ist wie folgt:
docker_python_packages:
- name: docker
- name: requests
- name: urllib3
Wenn hier andere pip-Modulversionen installiert sind, können Sie diese Standardwerte überschreiben.
Es ist möglich, für jedes Modul Versionen hinzuzufügen:
docker_python_packages:
- name: docker
version: 6.1.1
Wenn eine Version angegeben ist, wird versucht, genau diese Version zu installieren.
Es besteht jedoch auch die Möglichkeit, dieses Verhalten über compare_direction
zu beeinflussen.
docker_python_packages:
- name: docker
compare_direction: ">"
version: 6.0.0
Oder einen entsprechenden Bereich über versions
zu definieren:
docker_python_packages:
- name: docker
- name: requests
versions:
- ">= 2.27.0"
- "< 2.29.0"
- name: urllib3
versions:
- ">= 1.26.0"
- "< 2.0.0"
Beispiele
Installieren Sie die neueste Docker stable Version auf Ihrem lokalen CentOS-Server
- hosts: localhost
roles:
- role: docker
Installieren Sie die neueste Docker edge Version auf Ihrem lokalen CentOS-Server
- hosts: localhost
vars:
docker_repo:
channel:
nightly_enabled: true
roles:
- role: docker
Fortgeschrittenes Playbook mit verschiedenen angewendeten Variablen
- hosts: localhost
vars:
docker_config:
# Speichern Sie Docker-Container/Bilder in /opt/docker
data_root: /opt/docker
# Ändern Sie das Standard-Docker-Bridge-Subnetz
bip: 172.16.77.77/24
# Setzen Sie den Standard-Logtreiber auf journald
log_driver: journald
# Aktivieren Sie den experimentellen Modus
experimental: true
# Exponiere die Docker-API über Socket-Datei und TCP
hosts:
- unix:///var/run/docker.sock
- tcp://0.0.0.0:2376
# Setzen Sie die Standard-Suchdomänen
dns_search:
- lab1.linuxctl.com
- lab2.linuxctl.com
# Konfigurieren der Protokollierungsoptionen
log_opts:
"max-size": 10m
"max-file": "3"
labels: molecule
env: "os,customer"
roles:
- role: docker
Autor und Lizenz
Ursprung der
docker
Rolle geschrieben von:- George Bolo | linuxctl.com
Modifiziert:
- Bodo Schulz
Lizenz
MIT
KOSTENLOSE SOFTWARE, NA KLAR!
install and configure docker on various linux systems
ansible-galaxy install bodsch.docker