geerlingguy.docker
Rol de Ansible: Docker
Una Rol de Ansible que instala Docker en Linux.
Requisitos
Ninguno.
Variables de Rol
Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml
):
# La edición puede ser: 'ce' (Edición Comunitaria) o 'ee' (Edición Empresarial).
docker_edition: 'ce'
docker_packages:
- "docker-{{ docker_edition }}"
- "docker-{{ docker_edition }}-cli"
- "docker-{{ docker_edition }}-rootless-extras"
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 para instalar usando el formato específico de la distribución:
Red Hat/CentOS: docker-{{ docker_edition }}-<VERSIÓN>
(Nota: debes agregar esto a todos los paquetes);
Debian/Ubuntu: docker-{{ docker_edition }}=<VERSIÓN>
(Nota: debes agregar esto a todos los paquetes).
Puedes controlar si el paquete se instala, desinstala o se actualiza a la última versión configurando docker_packages_state
como present
, absent
o latest
, respectivamente. Nota que el daemon de Docker se reiniciará automáticamente si se actualiza el paquete de Docker. Este es un efecto secundario de procesar todos los manejadores (ejecutando cualquier manejador que haya sido notificado hasta este punto en el play).
docker_obsolete_packages:
- docker
- docker.io
- docker-engine
- podman-docker
- containerd
- runc
Una lista de paquetes que se desinstalarán antes de ejecutar esta rol. Consulta las instrucciones de instalación de Docker para una lista actualizada de los paquetes antiguos que deben ser eliminados.
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 Docker sin systemd o sysvinit, debes establecer docker_service_manage
como false
.
docker_install_compose_plugin: true
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present
Opciones para la instalación del plugin Docker Compose. Estas son diferentes 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: false
docker_compose_version: "2.11.1"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-linux-{{ docker_compose_arch }}"
docker_compose_path: /usr/local/bin/docker-compose
Opciones para la instalación de Docker Compose.
docker_add_repo: true
Controla si esta rol añadirá el repositorio oficial de Docker. Establece como false
si deseas utilizar 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 se usa para Debian/Ubuntu.) Puedes cambiar el canal a nightly
si deseas usar la versión Nightly.
Puedes cambiar docker_apt_gpg_key
a una URL diferente si estás detrás de un firewall o proporcionar un espejo confiable. Generalmente, esto se combina con cambiar docker_apt_repository
también. docker_apt_filename
controla el nombre del archivo de lista fuente creado en sources.list.d
. Si estás actualizando desde una versión más antigua (<7.0.0) de esta 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_yum_repo_enable_nightly: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"
(Solo se usa para RedHat/CentOS.) Puedes habilitar el repositorio Nightly o Test estableciendo las vars respectivas a 1
.
Puedes cambiar docker_yum_gpg_key
a una URL diferente si estás detrás de un firewall o proporcionar un espejo confiable. Generalmente, esto se combina con cambiar también el docker_yum_repository
.
docker_users:
- user1
- user2
Una lista de usuarios del sistema que se agregará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
se pueden configurar a través de este diccionario que representa el archivo json /etc/docker/daemon.json
.
Uso con Ansible (y la biblioteca Python docker
)
Muchos usuarios de esta rol desean también usar Ansible para luego construir imágenes Docker y gestionar contenedores Docker en el servidor donde se instala Docker. En este caso, puedes agregar fácilmente la biblioteca Python docker
usando la rol geerlingguy.pip
:
- hosts: all
vars:
pip_install_packages:
- name: docker
roles:
- geerlingguy.pip
- geerlingguy.docker
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 código abierto de Ansible!
Información del Autor
Esta rol fue creada en 2017 por Jeff Geerling, autor de Ansible for DevOps.
Docker for Linux.
ansible-galaxy install geerlingguy.docker