Zum Inhalt

OpenStack Client Installation

OpenStack Client (OSC) ist ein Befehlszeilen-Client für OpenStack, der den Befehlssatz für Compute, Identity, Image, Object Storage und Block Storage APIs — und über zusätzliche Clients auch Network, Orchestration, DNS, Key Management, Telemetry und Placement — in einer einzigen Shell mit einer einheitlichen Befehlsstruktur zusammenführt.

Diese Seite beschreibt, wie der OSC installiert und konfiguriert wird.

Voraussetzungen

  • Grundkenntnisse des Linux Betriebssystems (shell)
  • Zugriff auf laufende Linux-VM (In unserem Beispiel Ubuntu) mit ausgehendem HTTPS-Zugriff (TCP 443) auf die OpenStack-API
  • Application Credentials und eine passende clouds.yaml

Beide Regionen

Diese Befehlsfolge gilt für beide Regionen; die Region wird in Schritt 6 gewählt (Region 1 ch-zh1, Region 2 ch-ge1). Die Versionen werden über die upper-constraints.txt aus OpenStack 2025.1 (Epoxy) gepinnt.

1. uv installieren

Installieren Sie uv mit dem offiziellen Skript aus der uv-Installation:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool update-shell

Starten Sie die Shell neu, damit der neue PATH-Eintrag greift — oder übernehmen Sie ihn für die aktuelle Sitzung mit export PATH="$HOME/.local/bin:$PATH" — und prüfen Sie:

uv --version

2. Constraints-Datei laden

Das Release ist OpenStack 2025.1 (Epoxy) — siehe Epoxy Release-Übersicht.

curl -fsSL https://opendev.org/openstack/requirements/raw/branch/stable/2025.1/upper-constraints.txt -o /tmp/upper-constraints-2025.1.txt

Tip

Für wiederholte Upgrades legen Sie die Datei an einem dauerhaften Ort ab (zum Beispiel ~/.config/openstack/upper-constraints-2025.1.txt) und verwenden diesen Pfad in den folgenden Befehlen.

3. Client und Plugins installieren

Bestehende Installationen

Existiert openstack bereits (pipx, pip install --user), entfernen Sie es zuerst (pipx uninstall python-openstackclient) oder lassen Sie uv mit --force installieren. Starten Sie danach eine neue Shell, damit der Befehl auf das neue Binary zeigt.

uv tool install --python 3.12 \
  python-openstackclient \
  -c "/tmp/upper-constraints-2025.1.txt" \
  --with-executables-from gnocchiclient \
  --with-executables-from osc-placement \
  --with-executables-from python-barbicanclient \
  --with-executables-from python-cinderclient \
  --with-executables-from python-cloudkittyclient \
  --with-executables-from python-designateclient \
  --with-executables-from python-glanceclient \
  --with-executables-from python-heatclient \
  --with-executables-from python-keystoneclient \
  --with-executables-from python-mistralclient \
  --with-executables-from python-neutronclient \
  --with-executables-from python-novaclient \
  --with-executables-from python-octaviaclient \
  --with-executables-from python-swiftclient

Python 3.12 wird verwendet, weil OpenStack 2025.1 gegen Python 3.9 bis 3.12 getestet ist und Python 3.13 noch nicht unterstützt.

Die über --with-executables-from übergebenen Pakete liefern die Unterbefehle für Barbican, Cinder, CloudKitty, Designate, Glance, Heat, Keystone, Mistral, Neutron, Nova, Octavia, Swift, Gnocchi und Placement.

Alle Clients landen in einem isolierten uv-Tool-Environment — ins System-Python wird nichts installiert.

Kein Custom-Wheel nötig

Port Forwarding ist im 2025.1-Client enthalten.

4. Bash-Completion einrichten

mkdir -p ~/.local/share/bash-completion/completions
openstack complete > ~/.local/share/bash-completion/completions/openstack

Starten Sie die Shell neu. Die Completion wird pro Benutzer geladen, sudo ist dafür nicht nötig.

Note

Diese Completion ist für bash und setzt das Paket bash-completion voraus (Ubuntu/Debian: sudo apt install bash-completion). zsh und fish werden nicht abgedeckt — überspringen Sie den Schritt dort.

5. Installation prüfen

openstack --version  # gibt die Client-Version aus (für 2025.1 die 7.x-Reihe)
uv tool list         # listet python-openstackclient samt Service-Clients

6. Application Credentials konfigurieren

mkdir -p ~/.config/openstack

# Inhalt der clouds.yaml hier einfügen oder die Datei anlegen mit:
vim ~/.config/openstack/clouds.yaml

# Nur der Eigentümer darf die Datei lesen, sie enthält das Secret
chmod 600 ~/.config/openstack/clouds.yaml

# Standardverbindung und Region festlegen
export OS_CLOUD=openstack
export OS_REGION_NAME=ch-zh1

Region 2

Für ch-ge1 verwenden Sie export OS_REGION_NAME=ch-ge1 oder wählen den Eintrag openstack-ge1 über OS_CLOUD=openstack-ge1 (siehe clouds.yaml-Beispiel). OS_REGION_NAME überschreibt region_name aus der Datei.

Damit die Auswahl in jeder neuen Shell gilt, hängen Sie sie an Ihre ~/.bashrc an:

echo 'export OS_CLOUD=openstack' >> ~/.bashrc
echo 'export OS_REGION_NAME=ch-zh1' >> ~/.bashrc
source ~/.bashrc

Note

OS_CLOUD=openstack bezieht sich auf den Konfigurationsblock in Ihrer Datei clouds.yaml, wobei Sie auch mehrere Blöcke haben können! Falls Sie die Variable OS_CLOUD nicht exportieren, können Sie auch in der Command Line den Cloud Konfigurationsblock mitgeben. Zum Beispiel openstack --os-cloud=openstack image list

Beispiel: clouds.yaml

7. Test der Konfiguration und Konnektivität

openstack image list --public

Sie sehen eine Tabelle mit den Spalten ID, Name und Status. Die Liste hängt von Region und Projekt ab und ist deshalb hier nicht abgedruckt.

Ihr OpenStack-Client funktioniert!

Updates

Das Tool-Environment ist über die Constraints-Datei gepinnt. Für den aktuellen Patch-Stand des Release führen Sie den Installationsbefehl aus Schritt 3 erneut mit derselben Constraints-Datei aus. Erst nach einem Release-Upgrade verwenden Sie eine neue Constraints-Datei.

uv tool upgrade ist dafür nicht nötig und nicht an die Constraints-Datei gebunden; uv tool upgrade --all würde alle mit uv installierten Tools aktualisieren.