Nota

Este complemento es parte del colección community.docker (versión 1.2.2).

Para instalarlo use: ansible-galaxy collection install community.docker.

Para usarlo en un libro de jugadas, especifique: community.docker.docker_compose.

  • Sinopsis
  • Requisitos
  • Parámetros
  • Notas
  • Ejemplos de
  • Valores devueltos

Sinopsis

  • Utiliza Docker Compose para iniciar, cerrar y escalar servicios.
  • Funciona con componer versiones 1 y 2.
  • La configuración se puede leer desde un docker-compose.yml o docker-compose.yaml archivo o en línea usando el definición opción.
  • Consulte los ejemplos para obtener más detalles.
  • Admite el modo de verificación.
  • Este módulo se llamó docker_service antes de Ansible 2.8. El uso no cambió.

Requisitos

Los siguientes requisitos son necesarios en el host que ejecuta este módulo.

  • API de Docker> = 1.20
  • SDK de Docker para Python: tenga en cuenta que el docker-py El módulo de Python ha sido reemplazado por estibador (ver aquí para detalles). Para Python 2.6, docker-py debe ser usado. De lo contrario, se recomienda instalar el docker Módulo de Python. Tenga en cuenta que ambos módulos deben no ser instalado al mismo tiempo. También tenga en cuenta que cuando ambos módulos están instalados y uno de ellos se desinstala, es posible que el otro deje de funcionar y sea necesario volver a instalarlo.
  • SDK de Docker para Python > = 1.8.0 (utilizar docker-py para Python 2.6)
  • PyYAML> = 3,11
  • docker-compose> = 1.7.0

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
api_versioncuerda Defecto:
“auto”
La versión de la API de Docker que se ejecuta en el host de Docker. El valor predeterminado es la última versión de la API compatible con Docker SDK para Python y el demonio de Docker. Si el valor no se especifica en la tarea, el valor de la variable de entorno DOCKER_API_VERSION se utilizará en su lugar. Si no se establece la variable de entorno, se utilizará el valor predeterminado.
alias: docker_api_version
construirbooleano
    Opciones:

  • no
Usar con estadopresent para crear siempre imágenes antes de iniciar la aplicación. docker-compose build con la opción de extracción. Las imágenes solo se reconstruirán si Docker detecta un cambio en el Dockerfile o en el contenido del directorio de compilación. sin caché opción para ignorar la memoria caché de la imagen al realizar la compilación.Si se reemplaza una imagen existente, los servicios que usan la imagen se volverán a crear a menos que recrear es never.
ca_certsendero Utilice un certificado de CA al realizar la verificación del servidor proporcionando la ruta a un archivo de certificado de CA Si el valor no se especifica en la tarea y la variable de entorno DOCKER_CERT_PATH está configurado, el archivo ca.pem desde el directorio especificado en la variable de entorno DOCKER_CERT_PATH se utilizará.
alias: tls_ca_cert, cacert_path
client_certsendero Ruta al archivo de certificado TLS del cliente. Si el valor no se especifica en la tarea y la variable de entorno DOCKER_CERT_PATH está configurado, el archivo cert.pem desde el directorio especificado en la variable de entorno DOCKER_CERT_PATH se utilizará.
alias: tls_client_cert, cert_path
clave_clientesendero Ruta al archivo de claves TLS del cliente Si el valor no se especifica en la tarea y la variable de entorno DOCKER_CERT_PATH está configurado, el archivo key.pem desde el directorio especificado en la variable de entorno DOCKER_CERT_PATH se utilizará.
alias: tls_client_key, key_path
depurarbooleano
    Opciones:

  • no
Modo de depuración
definicióndiccionario Redacte un archivo que describa uno o más servicios, redes y volúmenes. project_src y archivos.
dependenciasbooleano
    Opciones:

  • no
Cuando estado es present especificar si incluir o no los servicios vinculados.
docker_hostcuerda Defecto:
“unix: //var/run/docker.sock”
La URL o la ruta del socket de Unix utilizada para conectarse a la API de Docker. Para conectarse a un host remoto, proporcione la cadena de conexión TCP. Por ejemplo, tcp://192.0.2.23:2376. Si se utiliza TLS para cifrar la conexión, el módulo reemplazará automáticamente tcp en la URL de conexión con https.Si el valor no se especifica en la tarea, el valor de la variable de entorno DOCKER_HOST se utilizará en su lugar. Si no se establece la variable de entorno, se utilizará el valor predeterminado.
alias: docker_url
archivoslista / elementos = camino Lista de nombres de archivos de composición relativa a project_src. Anulaciones docker-compose.yml o docker-compose.yamlLos archivos se cargan y combinan en el orden indicado.
hostname_checkbooleano
    Opciones:

  • no
Si se debe verificar o no el nombre de host del demonio de Docker con el nombre proporcionado en el certificado del cliente.
sin cachébooleano
    Opciones:

  • no
Usar con el construir opción para ignorar el caché durante el proceso de creación de la imagen.
nombre del proyectocuerda Proporcione un nombre de proyecto. Si no se proporciona, el nombre del proyecto se toma del nombre base de project_src.Requiere cuando definición está provisto.
project_srcsendero Ruta a un directorio que contiene un docker-compose.yml o docker-compose.yaml archivo.Mutualmente exclusivo con definición.Requiere cuando no definición está provisto.
jalarbooleano
    Opciones:

  • no
Usar con estadopresent para extraer siempre imágenes antes de iniciar la aplicación. docker-compose pull.Cuando se extrae una nueva imagen, los servicios que utilizan la imagen se volverán a crear a menos que recrear es never.
recrearcuerda
    Opciones:

  • siempre
  • Nunca
  • inteligente
De forma predeterminada, los contenedores se volverán a crear cuando su configuración difiera de la definición del servicio. never ignora las diferencias de configuración y deja los contenedores existentes sin cambios. always obliga a la recreación de todos los contenedores existentes.
remove_imagescuerda
    Opciones:

  • todos
  • local
Usar con estadoabsent para eliminar todas las imágenes o solo las imágenes locales.
remove_orphansbooleano
    Opciones:

  • no
Elimine los contenedores de los servicios no definidos en el archivo Compose.
remove_volumesbooleano
    Opciones:

  • no
Usar con estadoabsent para eliminar volúmenes de datos.
reiniciadobooleano
    Opciones:

  • no
Usar con estadopresent para reiniciar todos los contenedores definidos en el archivo Compose. servicios está definido, solo se reiniciarán los contenedores enumerados allí.
escaladiccionario Cuando estado es present servicios de escala. Proporcione un diccionario de pares clave / valor donde la clave es el nombre del servicio y el valor es un recuento entero para el número de contenedores.
servicioslista / elementos = cadena Cuando estado es present correr docker-compose up resp. docker-compose stop (con interrumpido) resp. docker-compose restart (con reiniciado) en un subconjunto de servicios. Si está vacío, que es el valor predeterminado, la operación se realizará en todos los servicios definidos en el archivo Compose (o en línea definición).
ssl_versioncuerda Proporcione un número de versión de SSL válido. Valor predeterminado determinado por el módulo ssl.py Si el valor no se especifica en la tarea, el valor de la variable de entorno DOCKER_SSL_VERSION se utilizará en su lugar.
estadocuerda
    Opciones:

  • ausente
  • regalo
Estado deseado del proyecto. present es lo mismo que correr docker-compose up resp. docker-compose stop (con interrumpido) resp. docker-compose restart (con reiniciado) .Especificando absent es lo mismo que correr docker-compose down.
interrumpidobooleano
    Opciones:

  • no
Usar con estadopresent para detener todos los contenedores definidos en el archivo Compose. servicios está definido, solo se detendrán los contenedores enumerados allí.
se acabó el tiempoentero Defecto:
10
tiempo de espera en segundos para el cierre del contenedor cuando está conectado o cuando los contenedores ya se están ejecutando.
tlsbooleano
    Opciones:

  • no
Asegure la conexión a la API mediante TLS sin verificar la autenticidad del servidor host de Docker. Tenga en cuenta que si validate_certs se establece en yes también, tendrá prioridad. Si el valor no se especifica en la tarea, el valor de la variable de entorno DOCKER_TLS se utilizará en su lugar. Si la variable de entorno no está configurada, el valor predeterminado será usó.
tls_hostnamecuerda Defecto:
“localhost”
Al verificar la autenticidad del servidor de Docker Host, proporcione el nombre esperado del servidor.Si el valor no se especifica en la tarea, el valor de la variable de entorno DOCKER_TLS_HOSTNAME se utilizará en su lugar. Si no se establece la variable de entorno, se utilizará el valor predeterminado.
validate_certsbooleano
    Opciones:

  • no
Asegure la conexión a la API utilizando TLS y verificando la autenticidad del servidor host de Docker. Si el valor no se especifica en la tarea, el valor de la variable de entorno DOCKER_TLS_VERIFY se utilizará en su lugar. Si no se establece la variable de entorno, se utilizará el valor predeterminado.
alias: tls_verify

Notas

Nota

  • Conéctese al demonio de Docker proporcionando parámetros con cada tarea o definiendo variables de entorno. Puedes definir DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_SSL_VERSION, DOCKER_TLS, DOCKER_TLS_VERIFY y DOCKER_TIMEOUT. Si está utilizando una máquina acoplable, ejecute el script que se envía con el producto que configura el entorno. Establecerá estas variables por ti. Ver https://docs.docker.com/machine/reference/env/ para más detalles.
  • Al conectarse al demonio de Docker con TLS, es posible que deba instalar paquetes de Python adicionales. Para el SDK de Docker para Python, versión 2.4 o posterior, esto se puede hacer instalando docker[tls] con ansible.builtin.pip.
  • Tenga en cuenta que el SDK de Docker para Python solo permite especificar la ruta a la configuración de Docker para muy pocas funciones. En general, utilizará $HOME/.docker/config.json Si el DOCKER_CONFIG la variable de entorno no está especificada, y use $DOCKER_CONFIG/config.json de lo contrario.
  • Este módulo utiliza el SDK de Docker para Python para comunicarse con el demonio de Docker.

Ejemplos de

# Examples use the django example at https://docs.docker.com/compose/django. Follow it to create the# flask directory-name: Run using a project directory
  hosts: localhost
  gather_facts: no
  tasks:-name: Tear down existing services
      community.docker.docker_compose:project_src: flask
        state: absent

    -name: Create and start services
      community.docker.docker_compose:project_src: flask
      register: output

    -ansible.builtin.debug:var: output

    -name: Run `docker-compose up` again
      community.docker.docker_compose:project_src: flask
        build: no
      register: output

    -ansible.builtin.debug:var: output

    -ansible.builtin.assert:that:"not output.changed "-name: Stop all services
      community.docker.docker_compose:project_src: flask
        build: no
        stopped: yes
      register: output

    -ansible.builtin.debug:var: output

    -ansible.builtin.assert:that:-"not web.flask_web_1.state.running"-"not db.flask_db_1.state.running"-name: Restart services
      community.docker.docker_compose:project_src: flask
        build: no
        restarted: yes
      register: output

    -ansible.builtin.debug:var: output

    -ansible.builtin.assert:that:-"web.flask_web_1.state.running"-"db.flask_db_1.state.running"-name: Scale the web service to 2
  hosts: localhost
  gather_facts: no
  tasks:-community.docker.docker_compose:project_src: flask
        scale:web:2register: output

    -ansible.builtin.debug:var: output

-name: Run with inline v2 compose
  hosts: localhost
  gather_facts: no
  tasks:-community.docker.docker_compose:project_src: flask
        state: absent

    -community.docker.docker_compose:project_name: flask
        definition:version:'2'services:db:image: postgres
            web:build:" playbook_dir /flask"command:"python manage.py runserver 0.0.0.0:8000"volumes:-" playbook_dir /flask:/code"ports:-"8000:8000"depends_on:- db
      register: output

    -ansible.builtin.debug:var: output

    -ansible.builtin.assert:that:-"web.flask_web_1.state.running"-"db.flask_db_1.state.running"-name: Run with inline v1 compose
  hosts: localhost
  gather_facts: no
  tasks:-community.docker.docker_compose:project_src: flask
        state: absent

    -community.docker.docker_compose:project_name: flask
        definition:db:image: postgres
            web:build:" playbook_dir /flask"command:"python manage.py runserver 0.0.0.0:8000"volumes:-" playbook_dir /flask:/code"ports:-"8000:8000"links:- db
      register: output

    -ansible.builtin.debug:var: output

    -ansible.builtin.assert:that:-"web.flask_web_1.state.running"-"db.flask_db_1.state.running"

Valores devueltos

Los valores de retorno comunes están documentados aquí, los siguientes son los campos exclusivos de este módulo:

Llave Devuelto Descripción
comportamientocomplejo cuando está en modo de verificación o depurar es yes Proporciona las acciones que se deben tomar en cada servicio según lo determinado por redactar.
Nombre del Serviciocomplejo siempre Nombre del servicio.
acciónlista / elementos = cadena siempre Un nombre descriptivo de la acción que se realizará en los contenedores del servicio.
identificacióncuerda siempre la identificación larga del contenedor
nombrecuerda siempre el nombre del contenedor
short_idcuerda siempre la identificación corta del contenedor
imagen_construidacomplejo en la construcción de la imagen Proporciona detalles de la imagen cuando se crea una nueva imagen para el servicio.
identificacióncuerda siempre hash de imagen
nombrecuerda siempre nombre de la imagen
pull_imagecomplejo en el tirón de la imagen Proporciona detalles de la imagen cuando se extrae una nueva imagen para el servicio.
identificacióncuerda siempre hash de imagen
nombrecuerda siempre nombre de la imagen
servicioscomplejo éxito Un diccionario que asigna el nombre del servicio a un diccionario de contenedores.
nombre_contenedorcomplejo éxito Nombre del contenedor. El formato es project_service_#.
cmdlista / elementos = cadena éxito Uno o más comandos a ejecutar en el contenedor.
Muestra:[‘postgres’]
imagencuerda éxito Nombre de la imagen a partir de la cual se construyó el contenedor.
Muestra:postgres
etiquetasdiccionario éxito Metadatos asignados al contenedor.
Muestra:‘…’: Ninguno
redeslista / elementos = diccionario éxito Contiene un diccionario para cada red a la que pertenece el contenedor.
aliaslista / elementos = cadena éxito Alias ​​asignados al contenedor por la red.
Muestra:[‘db’]
globalIPv6cuerda éxito Dirección IPv6 asignada al contenedor.
globalIPv6PrefixLenentero éxito Longitud de la subred IPv6.
Dirección IPcuerda éxito La dirección IP asignada al contenedor.
Muestra:172.17.0.2
IPPrefixLenentero éxito Número de bits utilizados por la subred.
Muestra:dieciséis
Enlaceslista / elementos = cadena éxito Lista de nombres de contenedores a los que está vinculado este contenedor.
dirección MACcuerda éxito Dirección Mac asignada a la NIC virtual.
Muestra:02: 42: ac: 11: 00: 02
estadodiccionario éxito Información sobre la disposición actual del contenedor.
corriendobooleano éxito Si el contenedor tiene un proceso en ejecución o no.
Muestra:Cierto
estadocuerda éxito Descripción del estado de ejecución.
Muestra:corriendo

Autores

  • Chris Houseknecht (@chouseknecht)