tinyblargon.docker_deploy

Rol de Ansible: despliegue de Docker

Rol de Ansible para desplegar una pila de Docker Compose (archivo).

Requisitos

Sistema local

  • rsync

Sistema desplegado

  • docker-ce
  • docker-ce-cli
  • containerd.io
  • docker-compose-plugin o docker-compose

Variables del rol

Nombre de la variable Tipo Valor por defecto Descripción
docker_deploy_source: string "docker-deploy" El directorio local que contiene el despliegue de Docker y el archivo de composición. Este directorio es relativo al directorio principal de los playbooks.
docker_deploy_destination: string "/opt/docker-deploy" La carpeta de destino a la que se debe clonar el despliegue.
docker_deploy_compose_file: string "docker-compose.yml" El nombre del archivo de composición de Docker que se debe iniciar.
docker_deploy_files: lista mapa [] Una lista de archivos que se deben copiar a docker_deploy_destination:, más información sobre el mapa se puede encontrar en el siguiente capítulo Docker_deploy_files.
docker_deploy_compatibility: bool true Habilitar la opción --compatibility al iniciar el archivo de composición.
docker_deploy_remove_orphans: bool true Habilitar la opción --remove-orphans al iniciar el archivo de composición.
docker_deploy_build: bool false Habilitar la opción --build cuando alguno de los archivos en docker_deploy_source: o docker_deploy_files: haya cambiado.
docker_deploy_recreate: bool false Habilitar la opción --force-recreate cuando alguno de los archivos en docker_deploy_source: o docker_deploy_files: haya cambiado.
docker_deploy_compose_plugin: bool true Especificar si se debe usar el comando docker compose o docker-compose, true para docker compose, false para docker-compose.
docker_deploy_prune: lista ["image"] Qué comandos de limpieza se deben ejecutar después de realizar un cambio en el despliegue de la composición. El valor puede ser una combinación de cualquiera de las siguientes opciones "builder", "container", "image", "network", "system", "volume".
docker_deploy_state: string "present" Cuando es "present", el docker_deploy_source: se sincronizará con el docker_deploy_destination: y el docker_deploy_compose_file: se iniciará. Cuando es "absent", el docker_deploy_compose_file: en docker_deploy_destination: se detendrá.
docker_deploy_rsync_opts: lista ['--exclude="*.example"'] Especificar opciones adicionales de rsync pasando una matriz. Todos los dest especificados en docker_deploy_files: se excluirán automáticamente de rsync.
docker_deploy_show_warnings: bool true Mostrar las advertencias de Docker Compose.
docker_deploy_absent_volume: bool false Solo se aplica cuando docker_deploy_state: es "absent". Habilita la opción --volumes al detener el archivo de composición, esto eliminará todos los volúmenes que se especifican en el archivo de composición.
docker_deploy_absent_remove: bool false Solo se aplica cuando docker_deploy_state: es "absent". Si es true, se eliminará docker_deploy_destination:.

Docker_deploy_files

Nombre de la variable Tipo Valor por defecto Descripción
content: string "" Cuando se usa en lugar de src, establece el contenido de un archivo directamente al valor especificado. Funciona solo cuando dest es un archivo. Crea el archivo si no existe.
dest: string Ruta remota relativa a docker_deploy_destination: donde se debe copiar el archivo. Si src es un directorio, esto también debe ser un directorio. Si dest es una ruta no existente y si dest termina con “/” o src es un directorio, se crea dest. Si dest es una ruta relativa, el directorio inicial se determina por el host remoto. Si src y dest son archivos, el directorio padre de dest no se crea y la tarea falla si no existe. Todos los dest serán automáticamente excluidos de rsync.
group: string "root" Nombre del grupo que debe ser dueño del objeto del sistema de archivos, como se pasaría a chown.
mode: string Los permisos del archivo o directorio de destino. Documentación de Ansible para más detalles
owner: string "root" Nombre del usuario que debe ser dueño del objeto del sistema de archivos, como se pasaría a chown. Especificar un nombre de usuario numérico se asumirá como un ID de usuario y no un nombre de usuario. Evitar nombres de usuario numéricos para evitar esta confusión.
src: string Ruta local a un archivo para copiar al servidor remoto. Esto puede ser absoluto o relativo. Si la ruta es un directorio, se copia recursivamente. En este caso, si la ruta termina con “/”, solo se copian el contenido dentro de ese directorio al destino. De lo contrario, si no termina con “/”, se copia el directorio mismo con todo su contenido. Este comportamiento es similar a la herramienta de línea de comandos rsync.
no_log: bool false Si es true, el contenido no puede ser registrado.

Cuando content: y src: no se especifican, se crea un archivo vacío en el destino.

Ejemplos de Playbooks

Presente

- hosts: all
  roles:
    - role: tinyblargon.docker_deploy
      vars:
        docker_deploy_source: "docker-deploy"
        docker_deploy_destination: "/opt/docker-deploy"
        docker_deploy_compose_file: "docker-compose.yml"
        docker_deploy_files:
          - dest: ".env"
            src: ".env"
          - dest: ".secrets/password.txt"
            content: "{{ lookup('file', 'password.txt') }}"
            owner: "root"
            group: "root"
            mode: "0600"
            no_log: true
        docker_deploy_compatibility: true
        docker_deploy_remove_orphans: true
        docker_deploy_recreate: true
        docker_deploy_compose_plugin: false
        docker_deploy_prune: ["system"]
        docker_deploy_state: "present"

Ausente

- hosts: all
  roles:
    - role: tinyblargon.docker_deploy
      vars:
        docker_deploy_destination: "/opt/docker-deploy"
        docker_deploy_compose_file: "docker-compose.yml"
        docker_deploy_compose_plugin: false
        docker_deploy_prune: ["system", "volume"]
        docker_deploy_state: "absent"
        docker_deploy_absent_volume: true
        docker_deploy_absent_remove: true

Licencia

MIT

Acerca del proyecto

Ansible role to deploy a docker compose stack (file).

Instalar
ansible-galaxy install tinyblargon.docker_deploy
Licencia
mit
Descargas
1.1k
Propietario
If the DevOps tooling doesn't exist, I'll write it myself.