sorrowless.docker
Rol de Ansible: Docker
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.
Docker for Linux.
ansible-galaxy install sorrowless.docker