bodsch.docker
Rol de Ansible: docker
Este rol configurará e instalará completamente dockerd.
He transferido este rol a su propia colección.
En el futuro, no aceptaré ni procesaré más solicitudes de extracción o problemas aquí.¡Por favor, usa la colección vinculada a partir de ahora!
Requisitos y Dependencias
Colecciones de Ansible
ansible-galaxy collection install bodsch.core
o
ansible-galaxy collection install --requirements-file collections.yml
- Conectividad al repositorio del paquete docker-ce
Sistemas operativos
Probado en
- ArchLinux
- ArtixLinux
- Basado en Debian
- Debian 10 / 11
- Ubuntu 20.04 / 22.04
¡Los sistemas basados en RedHat ya no están oficialmente soportados! Pueden funcionar, pero no necesariamente.
Variables del Rol
Las siguientes variables se pueden usar para personalizar la instalación de docker:
## elige el estado del canal del repositorio de docker de centos
docker_repo:
channel:
stable_enabled: true
test_enabled: false
nightly_enabled: false
## estado del paquete (presente, ausente, etc.)
docker_state: present
## ¿debe iniciar el daemon de docker al arrancar?
docker_service:
enable: true
## nombre del servicio de docker
name: docker
## instalar docker-compose en versión
docker_compose: {}
# como ejemplo:
# docker_compose:
# install: true
# version: 1.29.2
docker_users: []
docker_plugins: []
docker_client_config: []
docker_config: {}
docker_config_diff: true
docker_python_packages: []
Relacionado con Proxy
¿debe el daemon de docker usar un proxy para conexiones salientes?
docker_proxy:
enabled: false
## lista de variables de entorno que debemos establecer (comente las que no necesite)
env:
- "HTTP_PROXY=http://proxy.ejemplo.com:80/"
- "HTTP_PROXY=https://proxy.ejemplo.com:443/"
- "NO_PROXY=localhost,127.0.0.1,internalhub.ejemplo.com"
configuración del cliente de docker
Habilitar la autenticación para el Registro de Docker.
Aquí es posible crear una configuración para diferentes usuarios.
La contraseña almacenada aquí está codificada en base64 y no está encriptada.
La creación de una cadena correspondiente se puede hacer de las siguiente manera:
echo "jenkins$robot:rubbel-die-katz-du-dummschwätzer1" | base64
amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
docker_client_config:
## la ubicación donde debemos enviar la configuración del cliente
- location: "/root/.docker/config.json"
enabled: false
auths:
registry.gitfoo.tld:
auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
Alternativamente, también puedes ingresar tu nombre de usuario
y contraseña
.
El módulo de Ansible generará una cadena válida codificada en Base64 a partir de ello.
docker_client_config:
## la ubicación donde debemos enviar la configuración del cliente
- location: "/var/tmp/foo/config.json"
enabled: false
auths:
"test.tld":
username: "FOO-was-sonst"
password: "ja-toll-schon-wieder-alles-scheisse!"
Desde la versión 3.1.0, también es posible configurar el formato de salida de docker ps
o docker image
.
Aquí los parámetros proporcionados deben definirse en forma de lista:
docker_client_config:
## la ubicación donde debemos enviar la configuración del cliente
- 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"
opciones de configuración predeterminadas de dockerd
opciones soportadas actualmente:
opciones | tipo | predeterminado | descripción |
---|---|---|---|
authorization_plugins |
lista |
[] |
|
bip |
cadena |
- |
Especificar IP del puente de red |
bridge |
cadena |
- |
Adjuntar contenedores a un puente de red |
data_root |
cadena |
/var/lib/docker |
Directorio raíz del estado persistente de Docker |
debug |
bool |
false |
Habilitar el modo de depuración |
default_gateway |
cadena |
- |
Dirección IP del gateway por defecto del contenedor |
default_gateway_v6 |
cadena |
- |
Dirección IPv6 del gateway por defecto del contenedor |
default_shm_size |
cadena |
- |
Tamaño por defecto de shm para contenedores (por defecto 64MiB ) |
default_ulimits |
diccionario |
{} |
Ulimits por defecto para contenedores (por defecto []) |
dns |
lista |
[] |
Servidor DNS a utilizar |
dns_opts |
lista |
[] |
Opciones DNS a utilizar |
dns_search |
lista |
[] |
Dominios de búsqueda DNS a utilizar |
experimental |
bool |
false |
Habilitar funciones experimentales |
fixed_cidr |
cadena |
- |
Subred IPv4 para IPs fijas |
fixed_cidr_v6 |
cadena |
- |
Subred IPv6 para IPs fijas |
group |
grupo |
docker |
Grupo para el socket unix |
hosts |
lista |
[] |
Socket(s) del daemon a los que conectarse |
insecure_registries |
lista |
[] |
Habilitar comunicación con registros inseguros |
ip |
cadena |
0.0.0.0 |
IP predeterminada al vincular puertos de contenedores |
ip_forward |
bool |
true |
Habilitar net.ipv4.ip_forward (por defecto true) |
ip_masq |
bool |
true |
Habilitar la mascarada de IP (por defecto true) |
iptables |
bool |
true |
Habilitar la adición de reglas de iptables (por defecto true) |
ip6tables |
bool |
false |
Habilitar la adición de reglas de ip6tables (por defecto false) |
ipv6 |
bool |
false |
Habilitar redes IPv6 |
labels |
lista |
[] |
Establecer etiquetas clave=valor para el daemon |
log_driver |
cadena |
json-file |
Controlador predeterminado para logs de contenedores |
log_level |
cadena |
info |
Establecer el nivel de registro (debug ,info ,warn ,error ,fatal ) |
log_opts |
diccionario |
{} |
Opciones del controlador de registro predeterminadas para los contenedores |
max_concurrent_downloads |
int |
3 |
Establecer el número máximo de descargas concurrentes para cada pull |
max_concurrent_uploads |
int |
5 |
Establecer el número máximo de subidas concurrentes para cada push |
max_download_attempts |
int |
5 |
Establecer el número máximo de intentos de descarga para cada pull |
metrics_addr |
cadena |
- |
Establecer la dirección y el puerto predeterminados para servir la API de métricas |
oom_score_adjust |
int |
-500 |
Establecer el oom_score_adj para el daemon (por defecto -500) |
pidfile |
cadena |
/var/run/docker.pid |
Ruta para el archivo PID del daemon (por defecto "/var/run/docker.pid") |
raw_logs |
bool |
false |
Timestamps completos sin colores ANSI |
registry_mirrors |
lista |
[] |
Espejo de registro de Docker preferido |
seccomp_profile |
cadena |
- |
Ruta al perfil seccomp |
selinux_enabled |
bool |
false |
Habilitar soporte para selinux |
shutdown_timeout |
int |
15 |
Establecer el tiempo de espera predeterminado para apagado |
storage_driver |
cadena |
overlay2 |
Controlador de almacenamiento a utilizar (aufs , devicemapper , btrfs , zfs , overlay , overlay2 , fuse-overlayfs ) |
storage_opts |
lista |
[] |
Opciones del controlador de almacenamiento |
tls.verify |
bool |
false |
Usar TLS y verificar el remoto |
tls.ca_cert |
cadena |
~/.docker/ca.pem |
Confiar solo en certs firmados por esta CA (por defecto "~/.docker/ca.pem") |
tls.cert |
cadena |
~/.docker/cert.pem |
Ruta al archivo de certificado TLS (por defecto "~/.docker/cert.pem") |
tls.key |
cadena |
~/.docker/key.pem |
Ruta al archivo de clave TLS (por defecto "~/.docker/key.pem") |
Ejemplos
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: []
Al crear la configuración, se puede optar por crear un diff con la versión original.
Para ello, la variable docker_config_diff
debe configurarse en true
.
Hay más ejemplos en las pruebas de molecule:
opciones docker_users
Añade un usuario existente al grupo docker
.
Además, intenta establecer los derechos de acceso al socket de docker mediante setfacl
.
docker_users:
- jenkins
opciones docker_plugins
Instalar y activar plugins personalizados.
(¡Actualmente solo probado con Loki!)
docker_plugins:
- alias: loki
source: grafana/loki-docker-driver
version: 2.7.0
state: present
Soporte de python
Algunos de los módulos en este rol requieren extensiones de python adecuadas.
Recientemente, ha habido algunas incompatibilidades, por lo que este punto ahora también es configurable.
La configuración predeterminada es la siguiente:
docker_python_packages:
- name: docker
- name: requests
- name: urllib3
Si se instalan otras versiones de módulo pip aquí, puedes sobrescribir estas configuraciones predeterminadas.
Es posible añadir versiones a cada módulo:
docker_python_packages:
- name: docker
version: 6.1.1
Si se especifica una versión, se intentará instalar exactamente esa versión.
Sin embargo, también hay la posibilidad de influir en este comportamiento a través de compare_direction
.
docker_python_packages:
- name: docker
compare_direction: ">"
version: 6.0.0
O definir una ventana correspondiente a través de versions
:
docker_python_packages:
- name: docker
- name: requests
versions:
- ">= 2.27.0"
- "< 2.29.0"
- name: urllib3
versions:
- ">= 1.26.0"
- "< 2.0.0"
Ejemplos
Instalar la última versión estable de docker en tu servidor centos local
- hosts: localhost
roles:
- role: docker
Instalar la última versión en el canal edge de docker en tu servidor centos local
- hosts: localhost
vars:
docker_repo:
channel:
nightly_enabled: true
roles:
- role: docker
Playbook avanzado con varias variables aplicadas
- hosts: localhost
vars:
docker_config:
# almacenar contenedores/imágenes de docker en /opt/docker
data_root: /opt/docker
# cambiar subred del puente de docker por defecto
bip: 172.16.77.77/24
# establecer el controlador de registro predeterminado a journald
log_driver: journald
# habilitar modo experimental
experimental: true
# exponer la API de docker a través de un socket y tcp
hosts:
- unix:///var/run/docker.sock
- tcp://0.0.0.0:2376
# establecer dominios de búsqueda predeterminados
dns_search:
- lab1.linuxctl.com
- lab2.linuxctl.com
# configurar opciones de registro
log_opts:
"max-size": 10m
"max-file": "3"
labels: molecule
env: "os,customer"
roles:
- role: docker
Autor y Licencia
Rol original
docker
escrito por:- George Bolo | linuxctl.com
Modificado:
- Bodo Schulz
Licencia
MIT
¡SOFTWARE GRATIS, SÍ!
install and configure docker on various linux systems
ansible-galaxy install bodsch.docker