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.

Estado de Construcción

Índice


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.

Acerca del proyecto

Installs and Manages the Docker Engine. Has support for managing Commercial vs Open Source, Storage, Credentialing and more.

Instalar
ansible-galaxy install arc-ts.docker
Licencia
mit
Descargas
72
Propietario