githubixx.containerd

ansible-role-containerd

Rol de Ansible para instalar containerd. containerd es un runtime de contenedores estándar de la industria con énfasis en la simplicidad, robustez y portabilidad. Está disponible como un daemon para Linux y Windows, que puede gestionar todo el ciclo de vida de los contenedores de su sistema anfitrión: transferencia y almacenamiento de imágenes, ejecución y supervisión de contenedores, almacenamiento de bajo nivel y conexiones de red, etc.

Registro de cambios

Historial de cambios:

Consulta el CHANGELOG

Cambios recientes:

0.13.1+1.7.20

  • ACTUALIZACIÓN
    • actualizar containerd a v1.7.20

0.13.0+1.7.19

  • NUEVA CARACTERÍSTICA

    • agregar soporte para Ubuntu 24.04
  • ACTUALIZACIÓN

    • actualizar containerd a v1.7.19

Instalación

  • Descarga directamente desde Github (cambia al directorio del rol de Ansible antes de clonar): git clone https://github.com/githubixx/ansible-role-containerd.git githubixx.containerd

  • A través del comando ansible-galaxy y descarga directamente de Ansible Galaxy: ansible-galaxy install role githubixx.containerd

  • Crea un archivo requirements.yml con el siguiente contenido (esto descargará el rol desde Github) e instala con ansible-galaxy role install -r requirements.yml:

---
roles:
  - name: githubixx.containerd
    src: https://github.com/githubixx/ansible-role-containerd.git
    version: 0.13.1+1.7.20

Variables del rol

# Solo se admite el valor "base" actualmente
containerd_flavor: "base"

# Versión de containerd a instalar
containerd_version: "1.7.19"

# Directorio donde almacenar los binarios de "containerd"
containerd_binary_directory: "/usr/local/bin"

# Ubicación del archivo de configuración de containerd
containerd_config_directory: "/etc/containerd"

# Directorio para almacenar el archivo comprimido
containerd_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"

# Propietario/grupo de los binarios de "containerd". Si las variables no están establecidas
# el binario resultante será propiedad del usuario actual.
containerd_owner: "root"
containerd_group: "root"

# Especifica los permisos de los binarios de "containerd"
containerd_binary_mode: "0755"

# Sistema operativo
# Opciones posibles: "linux", "windows"
containerd_os: "linux"

# Arquitectura de procesador en la que debe ejecutarse "containerd".
# Otros valores posibles: "arm64","arm"
containerd_arch: "amd64"

# Nombre del archivo comprimido
containerd_archive_base: "containerd-{{ containerd_version }}-{{ containerd_os }}-{{ containerd_arch }}.tar.gz"

# La URL de descarga de containerd (normalmente no es necesario cambiarla)
containerd_url: "https://github.com/containerd/containerd/releases/download/v{{ containerd_version }}/{{ containerd_archive_base }}"

# Configuración del servicio systemd de containerd
containerd_service_settings:
  "ExecStartPre": "{{ modprobe_location }} overlay"
  "ExecStart": "{{ containerd_binary_directory }}/containerd"
  "Restart": "always"
  "RestartSec": "5"
  "Type": "notify"
  "Delegate": "yes"
  "KillMode": "process"
  "OOMScoreAdjust": "-999"
  "LimitNOFILE": "1048576"
  "LimitNPROC": "infinity"
  "LimitCORE": "infinity"

# Contenido del archivo de configuración de "containerd". Las configuraciones a continuación son las
# configuraciones que son diferentes de los ajustes predeterminados de "containerd".
#
# La configuración predeterminada de "containerd" se puede generar con este comando:
#
# containerd config default
#
# Diferencias con la configuración predeterminada:
#
# - El archivo de configuración contiene algunas variables del rol que serán reemplazadas cuando
#   se procese la plantilla de configuración.
# - En 'plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options' se establece
#   la opción "SystemdCgroup" en "true" en lugar de "false". Esto es relevante para
#   Kubernetes, por ejemplo. También consulta:
#   https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd
#
containerd_config: |
  version = 2
  [plugins]
    [plugins."io.containerd.grpc.v1.cri"]
      sandbox_image = "registry.k8s.io/pause:3.8"
      [plugins."io.containerd.grpc.v1.cri".cni]
        bin_dir = "/opt/cni/bin"
        conf_dir = "/etc/cni/net.d"
      [plugins."io.containerd.grpc.v1.cri".containerd]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
            runtime_type = "io.containerd.runc.v2"
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
              BinaryName = "/usr/local/sbin/runc"
              SystemdCgroup = true
  [stream_processors]
    [stream_processors."io.containerd.ocicrypt.decoder.v1.tar"]
      args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
      env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]
    [stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"]
      args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
      env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]

Dependencias

Dependencias opcionales (por ejemplo, necesarias para Kubernetes):

Por supuesto, puedes usar cualquier otro rol de runc y CNI.

Ejemplo de Playbook

- hosts: tu-anfitrión
  roles:
    - githubixx.containerd

Más ejemplos están disponibles en las pruebas de Molecule.

Pruebas

Este rol tiene una pequeña configuración de prueba que se crea utilizando Molecule, libvirt (vagrant-libvirt) y QEMU/KVM. Consulta mi publicación en el blog Probando roles de Ansible con Molecule, libvirt (vagrant-libvirt) y QEMU/KVM para saber cómo configurarlo. La configuración de prueba está aquí.

Posteriormente, se puede ejecutar molecule:

molecule converge

Esto configurará algunas máquinas virtuales (VM) con diferentes sistemas operativos Linux soportados e instalará containerd, runc y los plugins de CNI (que son necesarios para Kubernetes, por ejemplo).

También se incluye un pequeño paso de verificación. Extrae un contenedor de nginx y lo ejecuta para asegurarse de que containerd esté configurado correctamente y pueda ejecutar imágenes de contenedor:

molecule verify

Para limpiar, ejecuta

molecule destroy

Licencia

LICENCIA PÚBLICA GENERAL DE GNU Versión 3

Información del autor

http://www.tauceti.blog

Instalar
ansible-galaxy install githubixx.containerd
Licencia
Unknown
Descargas
2.3k
Propietario
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)