Container-Steuerung mit Podman via API

Direkter Zugang

In der agilen DevOps-Welt spielt das Thema Automatisierung eine zentrale Rolle. Der Container-Manager Podman stellt seit kurzem eine API zur Verfügung, die den Einsatz in CI/CD-Umgebungen wesentlich erleichtert.
Das Rechenzentrum und die IT-Infrastruktur im Unternehmen bilden die Grundlage für einen erfolgreichen IT-Betrieb. In der Dezember-Ausgabe beleuchtet ... (mehr)

Bereits im letzten Jahr haben die ersten Arbeiten an einer API für Podman begonnen. Dabei fiel die Wahl auf die Varlink-API [1]. Diese soll ein einfaches Interface über einen Unix-Dateideskriptor (Socket) als Endpunkt zur Verfügung stellen. Mithilfe eines SSH-Tunnels steht dieses Interface dann auch auf entfernten Systemen zur Verfügung. Im Laufe dieses Jahres kam eine Python-Bibliothek für Podman [2] hinzu, mit deren Hilfe der Zugriff auf die Varlink-API auch direkt aus Python-Programmen heraus funktioniert. Die in diesem Artikel aufgeführten Beispiele basieren auf einer Fedora-30-Installation, auf der wir die folgenden Software-Pakete aus dem Standard Repository der Distribution installiert haben:

rpm -q podman python3-podman-api libvarlink
 
podman-1.5.1-3.fc30.x86_64
python3-podman-api-0.0.0-0.1.20190613gitd0a45fe.fc30.noarch
libvarlink-18-1.fc30.x86_64

Alternativ zu den vorgefertigten Paketen können Sie die Software natürlich auch direkt aus den Quellen heraus installieren [2, 3].

Varlink-API einrichten

Um den Endpunkt der Varlink-API zu erzeugen, bietet Podman eine systemd-Unit-Datei an (Listing 1). Diese sorgt dafür, dass der System- und Service-Manager auf dem angegebenen Socket auf eingehende Anfragen lauscht. Die systemd-Service-Datei (Listing 2) sorgt dann dafür, dass das Podman-Tool aufgerufen wird, sobald der API-Endpunkt angesprochen wird. Schließlich müssen Sie sicherstellen, dass das systemd-Socket aktiv ist, damit Anfragen an dieses Socket Podman erreichen:

systemctl enable --now io.podman.socket
 
systemctl status io.podman.socket io.podman.socket - Podman Remote API Socket
Loaded: loaded (/usr/lib/systemd/system/io.podman.socket; enabled; vendor
...

Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023