VM-Instanz über die OpenStack CLI bereitstellen
Diese Anleitung führt Sie Schritt für Schritt durch die Bereitstellung einer virtuellen Maschine (VM) in Ihrer OpenStack-Umgebung unter Verwendung der OpenStack Command Line Interface (CLI). Dabei erstellen wir ein eigenes privates Netzwerk, ein Subnetz, einen Router mit Verbindung nach außen sowie eine Sicherheitsgruppe mit den wichtigsten Firewall-Regeln.
Architekturübersicht (Netzwerk-Stack)
Das folgende Schaubild verdeutlicht, wie das externe Netzwerk, der Router, das private Netzwerk/Subnetz, die Sicherheitsgruppe und die VM-Instanz miteinander verknüpft sind:
graph TD
Internet([Internet / Externer Zugriff]) <--> |FIP Zuordnung| FIP["Floating IP (z. B. 185.123.45.67)"]
FIP <--> |1:1 NAT| VM
subgraph Provider_Netz ["Provider-Netzwerk"]
ExtNet["Externes Netzwerk (public)"]
end
subgraph Projekt_Infr ["Projekt-Infrastruktur"]
Router["Router (mein-router)"]
subgraph Priv_Netz ["Privates Netzwerk (mein-netzwerk)"]
Subnet["Subnetz (mein-subnetz) <br> CIDR: 192.168.100.0/24"]
subgraph Sec_Group ["Sicherheitsgruppe (meine-sicherheitsgruppe)"]
VM["VM-Instanz (meine-erste-vm) <br> Private IP (z. B. 192.168.100.15)"]
end
end
end
ExtNet <--> |Externes Gateway| Router
Router <--> |Subnetz-Interface| Subnet
classDef highlight fill:#d4edda,stroke:#28a745,stroke-width:2px;
classDef router fill:#fff3cd,stroke:#ffc107,stroke-width:2px;
classDef ext fill:#f8d7da,stroke:#dc3545,stroke-width:2px;
classDef net fill:#e2e3e5,stroke:#383d41,stroke-dasharray: 5 5;
class VM highlight;
class Router router;
class ExtNet ext;
class Subnet net;
1. Voraussetzungen
Bevor Sie beginnen, müssen folgende Voraussetzungen erfüllt sein:
-
OpenStack-Client installieren: Installieren Sie das Python-Paket für den OpenStack-Client in Ihrer Terminal-Umgebung:
pip install python-openstackclient -
Zugangsdaten (RC-Datei) laden: Laden Sie Ihre OpenStack-Zugangsdaten (die
.sh-Datei aus dem Cloud Services Portal) herunter und führen Sie diese in Ihrem Terminal aus, um die Umgebungsvariablen zu setzen:Geben Sie bei Aufforderung Ihr Passwort ein. Testen Sie die Verbindung mit:source projekt-openrc.shopenstack token issue
2. Schritt-für-Schritt-Anleitung
Schritt 2.1: Privates Netzwerk erstellen
Zuerst erstellen wir ein privates Layer-2-Netzwerk, in dem sich Ihre Instanzen befinden werden.
openstack network create mein-netzwerk
Schritt 2.2: Subnetz erstellen
Erstellen Sie nun ein Subnetz innerhalb Ihres neu erstellten Netzwerks. Wir definieren einen IP-Adressbereich (CIDR) und fügen öffentliche DNS-Server hinzu (z. B. Google DNS), damit Ihre VMs später Hostnamen auflösen können.
openstack subnet create \
--network mein-netzwerk \
--subnet-range 192.168.100.0/24 \
--dns-nameserver 8.8.8.8 \
--dns-nameserver 8.8.4.4 \
mein-subnetz
Schritt 2.3: Router erstellen und konfigurieren
Um Ihrem privaten Netzwerk Zugriff auf das Internet (und umgekehrt) zu gewähren, benötigen Sie einen virtuellen Router.
-
Router erstellen:
openstack router create mein-router -
Externes Gateway setzen: Verbinden Sie den Router mit dem externen Provider-Netzwerk (in den meisten Umgebungen heißt dieses
public):openstack router set --external-gateway public mein-router -
Subnetz an den Router anbinden: Fügen Sie Ihr privates Subnetz als Schnittstelle (Interface) zum Router hinzu:
openstack router add subnet mein-router mein-subnetz
Schritt 2.4: Sicherheitsgruppe konfigurieren
Die Sicherheitsgruppe (Security Group) fungiert als Firewall für Ihre VM. Standardmäßig ist jeglicher eingehende Verkehr gesperrt.
-
Sicherheitsgruppe erstellen:
openstack security group create meine-sicherheitsgruppe --description "Erlaubt SSH und Ping" -
SSH-Regel hinzufügen (Port 22 erlauben):
openstack security group rule create --proto tcp --dst-port 22 meine-sicherheitsgruppe -
ICMP-Regel hinzufügen (Ping erlauben):
openstack security group rule create --proto icmp meine-sicherheitsgruppe
3. Ressourcen für den VM-Start ermitteln
Um eine Instanz zu starten, müssen Sie die IDs oder Namen der gewünschten Ressourcen (Image, Flavor, SSH-Schlüssel) kennen. Fragen Sie diese wie folgt ab:
-
Verfügbare Betriebssystem-Images auflisten:
(Merken Sie sich z. B.openstack image listUbuntu 22.04 LTS) -
Verfügbare Leistungsklassen (Flavors) auflisten:
(Merken Sie sich z. B.openstack flavor listm1.small) -
Verfügbare SSH-Keypairs auflisten:
(Falls Sie noch keinen Schlüssel hinterlegt haben, können Sie einen mitopenstack keypair listopenstack keypair create --public-key ~/.ssh/id_rsa.pub mein-schluesselimportieren)
4. Instanz (VM) starten
Sobald Sie alle Namen oder IDs gesammelt haben, können Sie die virtuelle Maschine erstellen. Übergeben Sie hierbei das private Netzwerk und die erstellte Sicherheitsgruppe:
openstack server create \
--flavor m1.small \
--image "Ubuntu 22.04 LTS" \
--key-name mein-schluessel \
--network mein-netzwerk \
--security-group meine-sicherheitsgruppe \
meine-erste-vm
Sie können den Status des Startvorgangs mit folgendem Befehl überwachen:
openstack server list
5. VM aus dem Internet erreichbar machen (Floating IP)
Da sich Ihre VM in einem privaten Subnetz befindet, ist sie von außen noch nicht direkt erreichbar. Hierfür weisen wir eine Floating IP zu:
-
Floating IP aus dem öffentlichen Pool reservieren:
(Dieser Befehl gibt eine IP-Adresse zurück, z. B.openstack floating ip create public185.123.45.67) -
Floating IP an die VM binden:
openstack server add floating ip meine-erste-vm 185.123.45.67
Nun können Sie sich per SSH auf Ihrer Instanz einloggen:
ssh ubuntu@185.123.45.67