githubixx.cni
ansible-role-cni
Rol de Ansible para instalar CNI - Interfaz de Red de Contenedores. CNI (Interfaz de Red de Contenedores), un proyecto de la Cloud Native Computing Foundation, consiste en una especificación y bibliotecas para escribir complementos que configuran interfaces de red en contenedores de Linux, junto con varios complementos admitidos. CNI se ocupa solo de la conectividad de red de los contenedores y de eliminar los recursos asignados cuando se elimina el contenedor. Debido a este enfoque, CNI tiene un amplio rango de soporte y la especificación es fácil de implementar.
Historial de cambios
Historial de cambios:
Ver el CHANGELOG completo.
Cambios recientes:
0.7.0+1.4.0
- Añadir soporte para Ubuntu
24.04
.
0.6.0+1.4.0
- Actualizar
cni_version
a1.4.0
.
0.5.1+1.3.0
- Ajustar el modo de directorio de descompresión.
- Agregar una subruta al valor de
cni_tmp_directory
para evitar el cambio de permisos del directorio padre. Sicni_tmp_directory
se estableció en/tmp
, la operación de descompresión cambió el modo de ese directorio. Agregar una subruta estática acni_tmp_directory
evita el problema.
0.5.0+1.3.0
- Actualizar
cni_version
a1.3.0
. - Añadir paso de verificación de Molecule.
- Eliminar soporte para Ubuntu
18.04
(alcanzó el final de su vida útil). - Añadir soporte para Ubuntu
22.04
. - Añadir binaries
dummy
ytap
de CNI. - Renombrar el escenario
kvm
de Molecule adefault
/ mover las opciones dememory
+cpus
a las cajas.
Variables de rol
# Versión del plugin CNI
cni_version: "1.4.0"
# Directorio de binarios de CNI
cni_bin_directory: "/opt/cni/bin"
# Directorio de configuración de CNI
cni_conf_directory: "/etc/cni/net.d"
# Directorio para almacenar el archivo comprimido
cni_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"
# Propietario/grupo de los archivos/directorios "CNI". Si las variables no están configuradas
# el binario resultante será propiedad del usuario actual.
cni_owner: "root"
cni_group: "root"
# Especifica los permisos de los binarios "CNI"
cni_binary_mode: "0755"
# Sistema operativo
# Opciones posibles: "linux", "windows"
cni_os: "linux"
# Arquitectura del procesador en la que debe ejecutarse "CNI".
# Otros valores posibles: "arm", "arm64", "mips64le", "ppc64le", "s390x"
cni_arch: "amd64"
# Nombre del archivo comprimido
cni_archive: "cni-plugins-{{ cni_os }}-{{ cni_arch }}-v{{ cni_version }}.tgz"
# La URL de descarga de CNI (normalmente no necesita ser cambiada)
cni_url: "https://github.com/containernetworking/plugins/releases/download/v{{ cni_version }}/{{ cni_archive }}"
# Reiniciar el servicio "kubelet" después de que los binarios o la configuración de "CNI" hayan cambiado.
# Este controlador espera un servicio systemd llamado "kubelet.service".
cni_restart_kubelet: false
Por hacer
- Distribuir archivos de configuración de red de CNI (para Cilium esto no es necesario ya que los archivos de CNI son creados por Cilium).
Ejemplo de Playbook
- hosts: tu-anfitrión
roles:
- githubixx.cni
Pruebas
Este rol tiene un pequeño conjunto de pruebas que se crea utilizando Molecule, libvirt (vagrant-libvirt) y QEMU/KVM. Por favor, 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í.
Después, se puede ejecutar molecule:
molecule converge
Esto configurará algunas máquinas virtuales (VM) con diferentes sistemas operativos Linux compatibles e instalará CNI
.
Para ejecutar algunas pruebas:
molecule verify
Para limpiar, ejecuta
molecule destroy
Licencia
LICENCIA PÚBLICA GENERAL GNU Versión 3
Información del autor
Ansible role to install CNI (Container Network Interface)
ansible-galaxy install githubixx.cni