githubixx.cni
ansible-role-cni
Ansible-Rolle zur Installation von CNI - Container Network Interface. CNI (Container Network Interface) ist ein Projekt der Cloud Native Computing Foundation und besteht aus einer Spezifikation und Bibliotheken zum Schreiben von Plugins, um Netzwerkinterfaces in Linux-Containern zu konfigurieren, sowie einer Reihe unterstützter Plugins. CNI befasst sich ausschließlich mit der Netzwerkverbindung von Containern und dem Entfernen zugewiesener Ressourcen, wenn der Container gelöscht wird. Aufgrund dieses Fokus hat CNI eine breite Unterstützung, und die Spezifikation ist einfach umzusetzen.
Änderungsprotokoll
Änderungshistorie:
Siehe vollständiges ÄNDERUNGSPROTOKOLL
Aktuelle Änderungen:
0.7.0+1.4.0
- Unterstützung für Ubuntu
24.04
hinzugefügt
0.6.0+1.4.0
cni_version
auf1.4.0
aktualisiert
0.5.1+1.3.0
- Verzeichnismodus für Entpacken angepasst
- Unterpfad zum Wert von
cni_tmp_directory
hinzugefügt, um eine Änderung der Berechtigungen des übergeordneten Verzeichnisses zu vermeiden. Wenncni_tmp_directory
auf/tmp
gesetzt wurde, änderte die Entpack-Operation den Modus dieses Verzeichnisses. Das Hinzufügen eines statischen Unterpfads zucni_tmp_directory
löst das Problem.
0.5.0+1.3.0
cni_version
auf1.3.0
aktualisiert- Molecule-Überprüfungsschritt hinzugefügt
- Unterstützung für Ubuntu
18.04
entfernt (Erreichte EOL) - Unterstützung für Ubuntu
22.04
hinzugefügt dummy
- undtap
-CNI-Binärdateien hinzugefügt- Molecule-Szenario
kvm
indefault
umbenannt /memory
undcpus
-Optionen zu Boxen verschoben
Rollenvariablen
# CNI-Plugin-Version
cni_version: "1.4.0"
# CNI-Binärverzeichnis
cni_bin_directory: "/opt/cni/bin"
# CNI-Konfigurationsverzeichnis
cni_conf_directory: "/etc/cni/net.d"
# Verzeichnis zur Speicherung des Archivs
cni_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"
# Besitzer/Gruppe der "CNI"-Dateien/-verzeichnisse. Wenn die Variablen nicht gesetzt sind,
# gehört die resultierende Binärdatei dem aktuellen Benutzer.
cni_owner: "root"
cni_group: "root"
# Gibt die Berechtigungen der "CNI"-Binärdateien an
cni_binary_mode: "0755"
# Betriebssystem
# Mögliche Optionen: "linux", "windows"
cni_os: "linux"
# Prozessorarchitektur, auf der "CNI" laufen soll.
# Andere mögliche Werte: "arm", "arm64", "mips64le", "ppc64le", "s390x"
cni_arch: "amd64"
# Name der Archivdatei
cni_archive: "cni-plugins-{{ cni_os }}-{{ cni_arch }}-v{{ cni_version }}.tgz"
# Die CNI-Download-URL (normalerweise muss sie nicht geändert werden)
cni_url: "https://github.com/containernetworking/plugins/releases/download/v{{ cni_version }}/{{ cni_archive }}"
# Den Dienst "kubelet" neu starten, nachdem sich "CNI"-Binärdateien oder -konfigurationen geändert haben.
# Dieser Handler erwartet einen systemd-Dienst namens "kubelet.service".
cni_restart_kubelet: false
TODO
- Verteilung der CNI-Netzwerkkonfigurationsdateien (für Cilium ist dies nicht erforderlich, da die CNI-Dateien von Cilium erstellt werden)
Beispiel-Playbook
- hosts: your-host
roles:
- githubixx.cni
Testen
Diese Rolle hat ein kleines Testsetup, das mit Molecule, libvirt (vagrant-libvirt) und QEMU/KVM erstellt wird. Bitte lesen Sie meinen Blogbeitrag Testing Ansible roles with Molecule, libvirt (vagrant-libvirt) and QEMU/KVM, um herauszufinden, wie man es einrichtet. Die Testkonfiguration finden Sie hier.
Anschließend kann Molecule ausgeführt werden:
molecule converge
Dies richtet einige virtuelle Maschinen (VM) mit verschiedenen unterstützten Linux-Betriebssystemen ein und installiert CNI
.
Um ein paar Tests durchzuführen:
molecule verify
Um aufzuräumen, führen Sie aus:
molecule destroy
Lizenz
GNU GENERAL PUBLIC LICENSE Version 3
Autoreninformation
Ansible role to install CNI (Container Network Interface)
ansible-galaxy install githubixx.cni