Zum Inhalt

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:

  1. OpenStack-Client installieren: Installieren Sie das Python-Paket für den OpenStack-Client in Ihrer Terminal-Umgebung:

    pip install python-openstackclient
    

  2. 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:

    source projekt-openrc.sh
    
    Geben Sie bei Aufforderung Ihr Passwort ein. Testen Sie die Verbindung mit:
    openstack 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.

  1. Router erstellen:

    openstack router create mein-router
    

  2. 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
    

  3. 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.

  1. Sicherheitsgruppe erstellen:

    openstack security group create meine-sicherheitsgruppe --description "Erlaubt SSH und Ping"
    

  2. SSH-Regel hinzufügen (Port 22 erlauben):

    openstack security group rule create --proto tcp --dst-port 22 meine-sicherheitsgruppe
    

  3. 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:

    openstack image list
    
    (Merken Sie sich z. B. Ubuntu 22.04 LTS)

  • Verfügbare Leistungsklassen (Flavors) auflisten:

    openstack flavor list
    
    (Merken Sie sich z. B. m1.small)

  • Verfügbare SSH-Keypairs auflisten:

    openstack keypair list
    
    (Falls Sie noch keinen Schlüssel hinterlegt haben, können Sie einen mit openstack keypair create --public-key ~/.ssh/id_rsa.pub mein-schluessel importieren)


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:

  1. Floating IP aus dem öffentlichen Pool reservieren:

    openstack floating ip create public
    
    (Dieser Befehl gibt eine IP-Adresse zurück, z. B. 185.123.45.67)

  2. 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