sorrowless.docker

Rol de Ansible: Docker

CI

Una Rol de Ansible que instala Docker en Linux.

Requisitos

Ninguno.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml):

# La edición puede ser 'ce' (Edición Comunitaria) o 'ee' (Edición Empresarial).
# Puedes definir la versión de docker usando la variable docker_version, por ejemplo: '=5:23.0.2-1~ubuntu.20.04~focal'
docker_edition: 'ce'
docker_version: ''
docker_packages:
  - "docker-{{ docker_edition }}{{ docker_version }}"
  - "docker-{{ docker_edition }}-cli{{ docker_version }}"
  - "docker-{{ docker_edition }}-rootless-extras{{ docker_version }}"
  - "containerd.io"
docker_packages_state: present

La docker_edition debe ser 'ce' (Edición Comunitaria) o 'ee' (Edición Empresarial). También puedes especificar una versión específica de Docker a instalar usando la variable "docker_version": docker_version: '=5:23.0.2-1ubuntu.20.04focal'

Puedes controlar si el paquete está instalado, desinstalado o en la última versión configurando docker_packages_state como present, absent, o latest, respectivamente. Ten en cuenta que el servicio de Docker se reiniciará automáticamente si se actualiza el paquete de Docker. Este es un efecto secundario de ejecutar todos los manejadores (corriendo cualquiera de los manejadores que han sido notificados por este rol y cualquier otro rol hasta este punto en la ejecución).

docker_service_manage: true
docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted

Variables para controlar el estado del servicio docker, y si debe iniciarse al arrancar. Si estás instalando Docker dentro de un contenedor de Docker sin systemd o sysvinit, debes configurar docker_service_manage como false.

docker_install_compose_plugin: false
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present

Opciones de instalación del Plugin de Docker Compose. Estas difieren de las siguientes en que docker-compose se instala como un plugin de docker (y se usa con docker compose) en lugar de un binario independiente.

docker_install_compose: true
docker_compose_version: "1.26.0"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_path: /usr/local/bin/docker-compose

Opciones de instalación de Docker Compose.

docker_add_repo: true

Controla si este rol añadirá el repositorio oficial de Docker. Establece en false si deseas usar los paquetes de docker predeterminados para tu sistema o gestionar el repositorio de paquetes por tu cuenta.

docker_repo_url: https://download.docker.com/linux

La URL principal del repositorio de Docker, común entre sistemas Debian y RHEL.

docker_apt_release_channel: stable
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: true
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
docker_apt_filename: "docker"

(Solo utilizado para Debian/Ubuntu). Puedes cambiar el canal a nightly si deseas usar la versión nocturna.

Puedes cambiar docker_apt_gpg_key a otra URL si estás detrás de un firewall o si proporcionar un espejo confiable. Generalmente en combinación con cambiar docker_apt_repository también. docker_apt_filename controla el nombre del archivo de lista de fuentes creado en sources.list.d. Si actualizas desde una versión anterior (<7.0.0) de este rol, debes cambiar esto al nombre del archivo existente (por ejemplo, download_docker_com_linux_debian en Debian) para evitar listas en conflicto.

docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"docker_edition }}.repo
docker_yum_repo_enable_nightly: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"

(Solo utilizado para RedHat/CentOS). Puedes habilitar el repositorio Nocturno o de Prueba configurando las variables respectivas a 1.

Puedes cambiar docker_yum_gpg_key a otra URL si estás detrás de un firewall o proporciona un espejo confiable. Generalmente en combinación con cambiar docker_yum_repository también.

docker_users:
  - user1
  - user2

Una lista de usuarios del sistema que se añadirán al grupo docker (para que puedan usar Docker en el servidor).

docker_daemon_options:
  storage-driver: "devicemapper"
  log-opts:
    max-size: "100m"

Opciones personalizadas de dockerd que se pueden configurar a través de este diccionario que representa el archivo json /etc/docker/daemon.json.

Para iniciar sesión en el registro necesitas definir las siguientes variables:

  • docker_registry_url
  • docker_registry_user
  • docker_registry_password

Uso con Ansible (y biblioteca de Python docker)

Muchos usuarios de este rol también desean usar Ansible para construir imágenes de Docker y gestionar contenedores Docker en el servidor donde se instala Docker. En este caso, puedes añadir fácilmente la biblioteca de Python docker usando el rol geerlingguy.pip:

- hosts: all

  vars:
    pip_install_packages:
      - name: docker

  roles:
    - geerlingguy.pip
    - geerlingguy.docker

Para configurar swarm debes añadir la variable docker_swarm_configure: true para todos los nodos, y docker_swarm_manager: true para los gestores. inventory_hostname debe ser igual al nombre del host (ansible_hostname) para que los nodos remotos sean correctos.

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: all
  roles:
    - geerlingguy.docker

Licencia

MIT / BSD

Patrocinadores

  • We Manage: Ayudando a startups y empresas a escalar su infraestructura de manera sostenible.

Los patrocinadores anteriores están apoyando a Jeff Geerling en GitHub Sponsors. ¡También puedes patrocinar el trabajo de Jeff para ayudarlo a seguir mejorando estos proyectos de Ansible de código abierto!

Información del Autor

Este rol fue creado en 2017 por Jeff Geerling, autor de Ansible for DevOps. Adaptado para necesidades propias por Stan Bogatkin.

Instalar
ansible-galaxy install sorrowless.docker
Licencia
mit
Descargas
4.6k
Propietario
Barocco-style deployment engineer