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 auf 1.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. Wenn cni_tmp_directory auf /tmp gesetzt wurde, änderte die Entpack-Operation den Modus dieses Verzeichnisses. Das Hinzufügen eines statischen Unterpfads zu cni_tmp_directory löst das Problem.

0.5.0+1.3.0

  • cni_version auf 1.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- und tap-CNI-Binärdateien hinzugefügt
  • Molecule-Szenario kvm in default umbenannt / memory und cpus-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

http://www.tauceti.blog

Installieren
ansible-galaxy install githubixx.cni
GitHub Repository
Lizenz
Unknown
Downloads
216
Besitzer
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)