githubixx.cni
ansible-role-cni
Rôle Ansible pour installer CNI - Container Network Interface. CNI (Interface Réseau de Conteneur), un projet de la Cloud Native Computing Foundation, consiste en une spécification et des bibliothèques pour écrire des plugins afin de configurer les interfaces réseau dans des conteneurs Linux, ainsi qu'un certain nombre de plugins supportés. CNI se concentre uniquement sur la connectivité réseau des conteneurs et sur la suppression des ressources allouées lorsque le conteneur est supprimé. Grâce à cette spécialisation, CNI bénéficie d'un large soutien et la spécification est simple à mettre en œuvre.
Historique des modifications
Historique des changements :
Voir le CHANGELOG complet
Changements récents :
0.7.0+1.4.0
- ajout du support pour Ubuntu
24.04
0.6.0+1.4.0
- mise à jour de
cni_version
vers1.4.0
0.5.1+1.3.0
- ajustement du mode du répertoire de décompression
- ajout d'un sous-chemin à la valeur
cni_tmp_directory
pour éviter de changer les permissions du répertoire parent. Sicni_tmp_directory
était défini sur/tmp
, l'opération de décompression changeait le mode de ce répertoire. L'ajout d'un chemin sous-texte àcni_tmp_directory
évite ce problème.
0.5.0+1.3.0
- mise à jour de
cni_version
vers1.3.0
- ajout d'une étape de vérification de Molecule
- suppression du support pour Ubuntu
18.04
(fin de vie) - ajout du support pour Ubuntu
22.04
- ajout des binaires CNI
dummy
ettap
- renommage du scénario Molecule
kvm
endefault
/ déplacement des optionsmemory
+cpus
vers les boîtes
Variables de rôle
# Version du plugin CNI
cni_version: "1.4.0"
# Répertoire des binaires CNI
cni_bin_directory: "/opt/cni/bin"
# Répertoire de configuration CNI
cni_conf_directory: "/etc/cni/net.d"
# Répertoire pour stocker l'archive
cni_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"
# Propriétaire/groupe des fichiers/répertoires "CNI". Si les variables ne sont pas définies
# le binaire résultant sera possédé par l'utilisateur actuel.
cni_owner: "root"
cni_group: "root"
# Définit les permissions des binaires "CNI"
cni_binary_mode: "0755"
# Système d'exploitation
# Options possibles : "linux", "windows"
cni_os: "linux"
# Architecture processeur sur laquelle "CNI" doit fonctionner.
# Autres valeurs possibles : "arm", "arm64", "mips64le", "ppc64le", "s390x"
cni_arch: "amd64"
# Nom du fichier d'archive
cni_archive: "cni-plugins-{{ cni_os }}-{{ cni_arch }}-v{{ cni_version }}.tgz"
# L'URL de téléchargement CNI (normalement pas besoin de le changer)
cni_url: "https://github.com/containernetworking/plugins/releases/download/v{{ cni_version }}/{{ cni_archive }}"
# Redémarre le service "kubelet" après que les binaires ou la configuration "CNI" ont changé.
# Ce gestionnaire attend un service systemd appelé "kubelet.service".
cni_restart_kubelet: false
À faire
- Distribuer les fichiers de configuration réseau CNI (pour Cilium, cela n'est pas nécessaire car les fichiers CNI sont créés par Cilium)
Exemple de Playbook
- hosts: votre-hôte
roles:
- githubixx.cni
Tests
Ce rôle dispose d'un petit ensemble de tests qui est créé à l'aide de Molecule, libvirt (vagrant-libvirt) et QEMU/KVM. Veuillez consulter mon article de blog Tester les rôles Ansible avec Molecule, libvirt (vagrant-libvirt) et QEMU/KVM pour savoir comment configurer. La configuration des tests est ici.
Ensuite, vous pouvez exécuter Molecule :
molecule converge
Cela mettra en place quelques machines virtuelles (VM) avec différents systèmes d'exploitation Linux supportés et installera CNI
.
Pour exécuter quelques tests :
molecule verify
Pour nettoyer, exécutez :
molecule destroy
Licence
Licence PUBLIQUE GÉNÉRALE GNU Version 3
Informations sur l'auteur
Ansible role to install CNI (Container Network Interface)
ansible-galaxy install githubixx.cni