Vai al contenuto

Distribuzione di un'istanza VM tramite la CLI OpenStack

Questa guida descrive passo dopo passo come distribuire una macchina virtuale (VM) nel proprio ambiente OpenStack tramite l'interfaccia a riga di comando (CLI) OpenStack. Creeremo una rete privata, una sottorete, un router collegato alla rete provider esterna e un gruppo di sicurezza con le regole firewall essenziali.

Panoramica dell'architettura (stack di rete)

Il diagramma seguente mostra come sono interconnessi la rete esterna, il router, la rete privata/sottorete, il gruppo di sicurezza e l'istanza VM:

flowchart TD
    Internet([Internet / External Access]) <-->|FIP Mapping| FIP["Floating IP (e.g., 185.123.45.67)"]
    FIP <-->|Bound to| Router
    Router <-->|1:1 NAT from floating to private IP| VM

    subgraph Provider_Net ["Provider Network"]
        ExtNet["External Network (public)"]
    end

    subgraph Project_Infr ["Project Infrastructure"]
        Router["Router (my-router)"]

        subgraph Priv_Net ["Private Network (my-network)"]
            Subnet["Subnet (my-subnet) <br> CIDR: 192.168.100.0/24"]

            subgraph Sec_Group ["Security Group (my-security-group)"]
                VM["VM Instance (my-first-vm) <br> Private IP (e.g., 192.168.100.15)"]
            end
        end
    end

    ExtNet <-->|External Gateway| Router
    Router <-->|Subnet 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. Prerequisiti

Prima di iniziare, verifichi che siano soddisfatti i seguenti prerequisiti:

  1. Installare il client OpenStack: Verifichi che la CLI openstack sia disponibile nel terminale:

    openstack --version
    
    Se il comando non è presente, lo installi come descritto nella guida all'installazione di OSC.

  2. Caricare le credenziali (file RC): Scarichi le proprie credenziali OpenStack (il file di ambiente .sh del Cloud Services Portal) e lo esegua nel terminale per configurare le variabili di ambiente:

    source project-openrc.sh
    
    Inserisca la password quando richiesto. Verifichi la connessione eseguendo:
    openstack token issue
    


2. Guida passo dopo passo

Passo 2.1: Creare una rete privata

Innanzitutto, crei una rete privata di livello 2 in cui risiederanno le istanze VM.

openstack network create my-network

Passo 2.2: Creare una sottorete

Crei una sottorete nella rete appena creata. Definiremo un intervallo di indirizzi IP (CIDR) e aggiungeremo server DNS pubblici (ad esempio Google DNS) affinché le VM possano risolvere i nomi di dominio.

openstack subnet create \
  --network my-network \
  --subnet-range 192.168.100.0/24 \
  --dns-nameserver 8.8.8.8 \
  --dns-nameserver 8.8.4.4 \
  my-subnet

Passo 2.3: Creare e configurare un router

Per fornire alla rete privata l'accesso a Internet (e viceversa), è necessario un router virtuale.

  1. Creare il router:

    openstack router create my-router
    

  2. Impostare il gateway esterno: Colleghi il router alla rete provider esterna (solitamente denominata public nella maggior parte delle installazioni):

    openstack router set --external-gateway public my-router
    

  3. Collegare la sottorete al router: Aggiunga la sottorete privata come interfaccia del router:

    openstack router add subnet my-router my-subnet
    

Passo 2.4: Configurare un gruppo di sicurezza

Il gruppo di sicurezza funge da firewall per la VM. Per impostazione predefinita, tutto il traffico in ingresso è bloccato.

  1. Creare il gruppo di sicurezza:

    openstack security group create my-security-group --description "Allows SSH and Ping"
    

  2. Aggiungere la regola SSH (consentire la porta 22):

    openstack security group rule create --proto tcp --dst-port 22 my-security-group
    

  3. Aggiungere la regola ICMP (consentire il ping):

    openstack security group rule create --proto icmp my-security-group
    


3. Raccogliere le risorse per la distribuzione della VM

Per avviare un'istanza VM, è necessario conoscere i nomi o gli ID delle risorse (immagine, flavor, coppia di chiavi SSH) da utilizzare. Li elenchi con questi comandi:

  • Elencare le immagini di sistemi operativi disponibili:

    openstack image list
    
    (ad esempio, annoti Ubuntu 22.04 LTS)

  • Elencare le dimensioni/flavor disponibili:

    openstack flavor list
    
    (ad esempio, annoti m1.small)

  • Elencare le coppie di chiavi SSH disponibili:

    openstack keypair list
    
    (Se non è ancora stata caricata una chiave, è possibile importare la chiave pubblica con openstack keypair create --public-key ~/.ssh/id_rsa.pub my-key)


4. Avviare l'istanza (VM)

Una volta raccolti i nomi o gli ID delle risorse necessarie, avvii la macchina virtuale. Specifichi la rete privata e il gruppo di sicurezza:

openstack server create \
  --flavor m1.small \
  --image "Ubuntu 22.04 LTS" \
  --key-name my-key \
  --network my-network \
  --security-group my-security-group \
  my-first-vm

È possibile monitorare lo stato di creazione con il comando seguente:

openstack server list


5. Esporre la VM su Internet (IP flottante)

Poiché la VM si trova su una rete privata, non è raggiungibile direttamente dall'esterno. Per renderla accessibile, si associa un IP flottante:

  1. Allocare un IP flottante dal pool pubblico:

    openstack floating ip create public
    
    (Questo comando restituisce un indirizzo IP, ad esempio 185.123.45.67)

  2. Associare l'IP flottante alla VM:

    openstack server add floating ip my-first-vm 185.123.45.67
    

Ora è possibile accedere all'istanza via SSH:

ssh ubuntu@185.123.45.67