githubixx.containerd

ansible-role-containerd

Ansible-Rolle zur Installation von containerd. containerd ist ein branchenüblicher Container-Laufzeit mit Fokus auf Einfachheit, Robustheit und Portabilität. Es wird als Daemon für Linux und Windows bereitgestellt und verwaltet den vollständigen Lebenszyklus der Container auf dem Hostsystem: Bildübertragung und -speicherung, Container-Ausführung und -Überwachung, niedrigstufige Speicherung und Netzwerkanbindungen usw.

Änderungsprotokoll

Änderungshistorie:

Siehe vollständiges ÄNDERUNGSPROTOKOLL

Aktuelle Änderungen:

0.13.1+1.7.20

  • UPDATE
    • containerd auf v1.7.20 aktualisieren

0.13.0+1.7.19

  • FEATURE

    • Unterstützung für Ubuntu 24.04 hinzufügen
  • UPDATE

    • containerd auf v1.7.19 aktualisieren

Installation

  • Direkt von Github herunterladen (Wechseln Sie in das Verzeichnis der Ansible-Rolle, bevor Sie klonen): git clone https://github.com/githubixx/ansible-role-containerd.git githubixx.containerd

  • Über den ansible-galaxy Befehl und direkt von Ansible Galaxy herunterladen: ansible-galaxy install role githubixx.containerd

  • Erstellen Sie eine Datei requirements.yml mit folgendem Inhalt (dies lädt die Rolle von Github herunter) und installieren Sie mit ansible-galaxy role install -r requirements.yml:

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

Rollenvariablen

# Derzeit wird nur der Wert "base" unterstützt
containerd_flavor: "base"

# Version von containerd, die installiert werden soll
containerd_version: "1.7.19"

# Verzeichnis, in dem die "containerd"-Binaries gespeichert werden
containerd_binary_directory: "/usr/local/bin"

# Standort der containerd-Konfigurationsdatei
containerd_config_directory: "/etc/containerd"

# Verzeichnis zur Speicherung des Archivs
containerd_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"

# Besitzer/Gruppe der "containerd"-Binaries. Wenn die Variablen nicht gesetzt sind,
# gehört die resultierende Binary dem aktuellen Benutzer.
containerd_owner: "root"
containerd_group: "root"

# Gibt die Berechtigungen der "containerd"-Binaries an
containerd_binary_mode: "0755"

# Betriebssystem
# Mögliche Optionen: "linux", "windows"
containerd_os: "linux"

# Prozessarchitektur, auf der "containerd" laufen soll.
# Andere mögliche Werte: "arm64", "arm"
containerd_arch: "amd64"

# Name der Archivdatei
containerd_archive_base: "containerd-{{ containerd_version }}-{{ containerd_os }}-{{ containerd_arch }}.tar.gz"

# Die Download-URL für containerd (normalerweise muss dies nicht geändert werden)
containerd_url: "https://github.com/containerd/containerd/releases/download/v{{ containerd_version }}/{{ containerd_archive_base }}"

# Einstellungen für den containerd-Systemd-Dienst
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"

# Inhalt der Konfigurationsdatei von "containerd". Die folgenden Einstellungen sind die
# Einstellungen, die von den Standard-"containerd"-Einstellungen abweichen.
#
# Die Standardkonfiguration für "containerd" kann mit diesem Befehl generiert werden:
#
# containerd config default
#
# Unterschiede zur Standardkonfiguration:
#
# - Die Konfigurationsdatei enthält einige Rollenvariablen, die ersetzt werden, wenn
#   die Konfigurationstemplate verarbeitet wird.
# - In 'plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options' ist die
#   Einstellung "SystemdCgroup" auf "true" anstelle von "false" gesetzt. Dies ist relevant für
#   Kubernetes, z.B. Siehe auch:
#   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"]

Abhängigkeiten

Optionale Abhängigkeiten (z.B. benötigt für Kubernetes):

Es können natürlich auch andere runc- und CNI-Rollen verwendet werden.

Beispiel-Playbook

- hosts: ihr-host
  rollen:
    - githubixx.containerd

Weitere Beispiele finden Sie in den Molecule-Tests.

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 zur Einrichtung. Die Testkonfiguration ist 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 containerd, runc und die CNI-Plugins (die z.B. für Kubernetes benötigt werden).

Ein kleiner Verifizierungsschritt ist ebenfalls enthalten. Es wird ein Nginx-Container heruntergeladen und ausgeführt, um sicherzustellen, dass containerd korrekt eingerichtet ist und Containerbilder ausführen kann:

molecule verify

Um aufzuräumen, führen Sie aus:

molecule destroy

Lizenz

GNU ALLGEMEINE ÖFFENTLICHE LIZENZ, Version 3

Autoreninformationen

http://www.tauceti.blog

Installieren
ansible-galaxy install githubixx.containerd
Lizenz
Unknown
Downloads
2.3k
Besitzer
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)