arc-ts.docker
Rol de Ansible: Docker
Este rol gestiona la instalación y configuración del Docker Engine con soporte para gestión de credenciales y aprovisionamiento de almacenamiento personalizado. Se ha probado con CentOS 7.3, Debian Jessie, Ubuntu Trusty y Ubuntu Xenial. RHEL 7.x tiene soporte limitado.
Índice
- Requisitos
- Dependencias
- Variables del Rol
- Ejemplo de Playbook
- Pruebas y Contribuciones
- Licencia
- Información del Autor
Requisitos
Este rol depende de Ansible 2.2 o superior para funcionar completamente.
NOTA: La versión 2.x.x
y superior de este rol SOLO soporta el esquema de versión de estilo YY.MM
(por ejemplo, docker-ce-17.03.1
). Para versiones más antiguas (por ejemplo, docker-engine-1.13.1
), por favor usa la versión 1.x.x
de este rol.
NOTA: Docker Inc. ya no utiliza repositorios accesibles públicamente para su Edición Empresarial. Con la versión 2.0.0
de este rol, se ha eliminado el soporte para la gestión de repositorios empresariales. Sin embargo, aún puede gestionar e instalar la Edición Empresarial.
Dependencias
La biblioteca de python docker
o docker-py
es un requisito para cualquier componente del rol que no sea la instalación del Docker Engine en sí. Sin embargo, el rol se encargará de instalar la versión correcta, si está configurado para hacerlo.
NOTA: A partir del 13/04/2017, Ansible no soporta la biblioteca de python 2.0.2+. Se espera soporte para la versión 2.4 de Ansible. Para más información, por favor ve el problema de GitHub aquí: https://github.com/ansible/ansible/issues/22993
Variables del Rol
Control de Ejecución
Habilita o deshabilita componentes específicos del Rol de Docker.
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
external_dependency_delay |
20 |
El tiempo en segundos entre reintentos de dependencias externas. |
external_dependency_retries |
6 |
El número de reintentos para acceder a una dependencia externa. |
docker_manage_py |
true |
Instala la biblioteca docker de python, ya sea desde el repositorio o pip. Nota: Esto es necesario para la gestión de contenedores, credenciales, imágenes y redes. |
docker_manage_engine_repo |
true |
Gestiona el repositorio de Docker. Ofrece soporte tanto para Repositorios de Código Abierto como para Repositorios Soportados Comercialmente. |
docker_manage_engine_storage |
false |
Si es verdadero, el controlador de almacenamiento del Docker Engine será gestionado por el rol. No se debe suministrar controladores de almacenamiento o opciones de almacenamiento manualmente. |
docker_manage_engine_users |
true |
Crea y gestiona un grupo de Docker que tiene derechos para interactuar con Docker. |
docker_manage_registry_credentials |
true |
Gestiona las credenciales para una lista de registros proporcionada. Nota: Requiere la biblioteca docker. |
docker_manage_engine_networks |
true |
Habilita la gestión de redes de contenedores de Docker. Nota: Requiere la biblioteca docker. |
docker_manage_images |
true |
Gestiona el ciclo de vida de las imágenes de contenedores. Nota: Requiere la biblioteca docker. |
docker_manage_containers |
true |
Habilita la gestión de la ejecución de contenedores de Docker. Nota: Requiere la biblioteca docker. |
Biblioteca Python de Docker
Gestiona la instalación de la biblioteca Python de Docker. Si se suministra una versión que es 2.0.0
o mayor, se eliminará el paquete más antiguo docker-py
y se instalará el nuevo paquete docker
a su lugar.
Variable | Predeterminado | Opciones | Descripción |
---|---|---|---|
docker_py_install |
pip |
pip o pkg |
Tipo de instalación. Desde pip o paquete. |
docker_py_pip_extra_args |
- | - | Argumentos adicionales para pasar a pip durante la ejecución. e.g. -i <espejo pypi local> |
docker_py_pip_upgrade |
true |
true o false |
Permitir que pip sea actualizado durante el proceso de instalación. |
docker_py_version |
- | - | La versión de la biblioteca de docker a instalar. Por defecto es la última. |
Repositorio del Docker Engine
Controla la configuración del repositorio del Docker Engine.
Nombre de Variable | Predeterminado | Opciones | Descripción |
---|---|---|---|
docker_engine_architecture |
amd64 |
amd64 o armhf |
Especifica la arquitectura prevista. NOTA: armhf está SOLO soportado en distribuciones basadas en Ubuntu y Debian. |
docker_engine_channel |
stable |
stable o edge |
Especifica si se debe usar el canal de lanzamiento stable o edge . |
docker_engine_edition |
ce |
ce o ee |
Utilizar la Edición Comunitaria (CE) o la Edición Empresarial (EE). NOTA: El repositorio de la Edición Empresarial NO puede ser gestionado por el rol. |
docker_engine_repo_gpg_key_server |
sks-keyservers.net |
- | El servidor de claves a utilizar para la validación de las claves gpg del repositorio. |
docker_engine_repo_ce_deb_gpg_key |
0x8D81803C0EBFCD88 |
- | La clave gpg utilizada para el repositorio basado en deb de CE. |
docker_engine_repo_ce_rpm_gpg_key |
0xc52feb6b621e9f35 |
- | La clave gpg utilizada para el repositorio basado en rpm de CE. |
Configuración de Almacenamiento del Docker Engine
Gestiona el controlador de almacenamiento del Docker Engine y, en ciertas circunstancias, el almacenamiento subyacente. Comparar las diferentes opciones de almacenamiento está fuera del alcance de este documento; sin embargo, se puede encontrar más información aquí: https://docs.docker.com/engine/userguide/storagedriver/selectadriver/.
Nota: Para todos los controladores de almacenamiento, las storage_opts
deben pasarse en forma de una matriz de elementos. Para más información sobre las opciones de almacenamiento disponibles y específicas para cada controlador, por favor consulta la documentación aquí: https://docs.docker.com/v1.10/engine/reference/commandline/daemon/
Matriz de Soporte de Almacenamiento:
aufs | btrfs | devicemapper (lvm-direct) | overlay | overlay2 | |
---|---|---|---|---|---|
CentOS 7.3 | - | x | x | x | - |
Debian 8 (Jessie) | x | x | - | - | - |
RHEL 7.3 | - | x | x | x | - |
Ubuntu 14.04 (Trusty) | x | x | - | - | - |
Ubuntu 16.04 (Xenial) | x | x | - | x | x |
Nombre de Variable | Predeterminado | Opciones | Descripción |
---|---|---|---|
docker_engine_storage_driver |
- | aufs , btrfs , devicemapper , overlay |
El controlador de almacenamiento a usar con el Docker Engine |
docker_engine_storage_config |
- | - | Un hash que contiene la información del controlador suministrado por docker_engine_storage_driver . |
aufs
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_storage_driver |
aufs |
- |
graph |
/var/lib/docker |
El directorio raíz del tiempo de ejecución de docker |
storage_opts |
- | Opciones de Almacenamiento opcionales para pasar al demonio de Docker |
btrfs
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_storage_driver |
btrfs |
- |
device |
- | REQUERIDO El dispositivo o partición (por ejemplo, /dev/sdb ) que se pretende usar y gestionar por Docker. |
graph |
/var/lib/docker |
El directorio raíz del tiempo de ejecución de docker |
mkfs_opts |
- | Parámetros adicionales para pasar a mkfs.btrfs durante la creación de volúmenes. |
mount_opts |
defaults |
Parámetros de montaje para usar en el volumen Docker btrfs. |
storage_opts |
- | Opciones de Almacenamiento opcionales para pasar al demonio de Docker |
devicemapper (lvm-direct)
NOTA: No todos los errores son capturados correctamente durante la creación del thinpool. Hay una tarea de verificación que interrumpe el proceso al final de la configuración lvm si se detecta que no está configurado correctamente. Para que el rol se ejecute nuevamente, el grupo de volúmenes lvm debe ser eliminado manualmente (vgremove <nombre del vg>
). Este es un comportamiento intencionado para evitar cualquier tipo de pérdida de datos accidental.
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_storage_driver |
devicemapper |
- |
device |
- | REQUERIDO El dispositivo o partición (por ejemplo, /dev/sdb ) que se pretende usar y gestionar por Docker. |
vg_name |
docker-vg |
El nombre del Grupo de Volumen de Docker. |
vg_opts |
- | Parámetros opcionales a usar durante la creación del Grupo de Volumen. |
lv_name |
thinpool |
El nombre del volumen lógico thinpool. |
lv_data_opts |
--wipesignatures y |
Parámetros a pasar durante la creación del volumen lógico de datos. |
lv_metadata_opts |
--wipesignatures y |
Parámetros a pasar durante la creación del volumen lógico de metadatos. |
thinpool_autoextend_threshold |
80 |
El porcentaje lleno que define cuándo el volumen lógico thinpool debe ser extendido. |
thinpool_autoextend_percent |
20 |
El valor porcentual (en relación a su tamaño actual) de cuánto espacio adicional se debe agregar al volumen lógico thinpool desde el Grupo de Volumen. |
data_share |
95 |
El porcentaje del espacio del Grupo de Volumen que se asignará al volumen lógico de datos. |
metadata_share |
1 |
El porcentaje del espacio del Grupo de Volumen que se asignará al volumen lógico de metadatos. |
storage_opts |
[ 'dm.use_deferred_removal=true'] |
Opciones de Almacenamiento opcionales para pasar al demonio de Docker |
overlay
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_storage_driver |
overlay |
- |
graph |
/var/lib/docker |
El directorio raíz del tiempo de ejecución de docker |
storage_opts |
- | Opciones de Almacenamiento opcionales para pasar al demonio de Docker |
overlay2
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_storage_driver |
overlay2 |
- |
graph |
/var/lib/docker |
El directorio raíz del tiempo de ejecución de docker |
storage_opts |
- | Opciones de Almacenamiento opcionales para pasar al demonio de Docker |
Docker Engine
Estos parámetros controlan el Docker Engine y el Demonio del Docker Engine.
Nota: Si docker_manage_engine_storage
está habilitado, no se debe suministrar storage-opt
en el hash docker_engine_opts
, y debe ser controlado a través de docker_engine_storage_config.storage_opts
.
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_version |
- | La versión del Docker Engine a instalar. Si no se suministra, se instalará la más reciente. |
docker_engine_env_vars |
- | Un hash de pares clave-valor a pasar al Docker Engine como variables de entorno. |
docker_engine_opts |
- | Un hash de pares clave-[arreglo de valores] que se utilizarán como opciones del Docker Engine. e.g. dns: [ '8.8.8.8', '8.8.4.4'] |
Usuarios y Grupos del Docker Engine
Gestiona el acceso al grupo de docker en un host.
Nombre de Variable | Predeterminado | Descripción |
---|---|---|
docker_engine_users |
- | Un arreglo de nombres de usuario que se agregarán al grupo de docker. Estos usuarios podrán ejecutar docker sin derechos de sudo. |
Credenciales del Registro del Docker Engine
Gestiona la autenticación a los registros de Docker. La configuración se proporciona a través de un arreglo de hashes, con cada hash conteniendo pares clave/valor de las opciones disponibles para el Módulo de Inicio de Sesión de Docker. Para una lista completa de opciones y predeterminados, por favor consulta la documentación de Ansible sobre el módulo docker_login.
Nombre de Variable | Descripción |
---|---|
docker_registry_credentials |
Arreglo de hashes que contiene la configuración del registro de Docker. |
Redes de Contenedores
Gestiona la creación y eliminación de Redes de Docker. Las redes se gestionan a través de un arreglo de hashes, cada uno de los cuales contiene una configuración de red según las opciones disponibles para el módulo de red Docker. Para una lista completa de opciones y predeterminados, consulta la documentación de Ansible sobre el módulo docker_network.
Nombre de Variable | Descripción |
---|---|
docker_networks |
Arreglo de hashes que contiene la configuración de Redes de Docker. |
Imágenes de Contenedores
Gestiona todos los aspectos del ciclo de vida de una imagen de contenedor. Las imágenes se gestionan a través de un arreglo de hashes que contienen la configuración de la imagen del contenedor. Para una referencia de las opciones disponibles, consulta la documentación de Ansible sobre el módulo docker_image.
Nombre de Variable | Descripción |
---|---|
docker_images |
Arreglo de hashes que contiene la configuración de Imágenes de Docker. |
Ejecución de Contenedores
Gestiona la ejecución en tiempo de ejecución de los Contenedores. Los contenedores se gestionan a través de un arreglo de hashes que contienen la configuración del contenedor. Para una referencia de las opciones disponibles, consulta la documentación de Ansible sobre el módulo docker_container.
Nombre de Variable | Descripción |
---|---|
docker_containers |
Arreglo de hashes que contiene la configuración de Contenedores de Docker. |
Ejemplo de Playbook
Se pueden encontrar variedad de ejemplos en el directorio de pruebas.
---
- name: docker
hosts: all
connection: local
gather_facts: True
tags:
- 'docker'
vars:
docker_manage_py: true
docker_manage_engine_repo: true
docker_manage_engine_storage: true
docker_manage_engine_users: true
docker_manage_registry_credentials: true
docker_manage_images: true
docker_manage_containers: true
docker_engine_version: '1.12.1'
docker_engine_storage_driver: devicemapper
docker_engine_storage_config:
device: /dev/sdb
docker_engine_env_vars:
DOCKER_HOST: /var/run/docker.sock
TLS_VERIFY: TRUE
docker_engine_opts:
dns:
- '8.8.8.8'
- '8.8.4.4'
docker_engine_users:
- vagrant
docker_registry_credentials:
- username: test
password: testpass
registry: registry.example.com
docker_images:
- name: nginx
tag: '1.10.1-alpine'
docker_containers:
- name: nginx
image: 'nginx:1.10.1-alpine'
docker_networks:
- name: testnet
driver_options:
com.docker.network.bridge.name: testnet1
ipam_options:
subnet: '10.255.13.1/24'
gateway: '10.255.13.1'
Pruebas y Contribuciones
Por favor consulta el documento CONTRIBUTING.md en el repositorio.
Licencia
MIT
Información del Autor
Creado por Bob Killen, mantenido por el Departamento de Investigación Avanzada en Computación y Servicios Técnicos de la Universidad de Michigan.
Installs and Manages the Docker Engine. Has support for managing Commercial vs Open Source, Storage, Credentialing and more.
ansible-galaxy install arc-ts.docker