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:
-
Installare il client OpenStack: Verifichi che la CLI
openstacksia disponibile nel terminale:Se il comando non è presente, lo installi come descritto nella guida all'installazione di OSC.openstack --version -
Caricare le credenziali (file RC): Scarichi le proprie credenziali OpenStack (il file di ambiente
.shdel Cloud Services Portal) e lo esegua nel terminale per configurare le variabili di ambiente:Inserisca la password quando richiesto. Verifichi la connessione eseguendo:source project-openrc.shopenstack 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.
-
Creare il router:
openstack router create my-router -
Impostare il gateway esterno: Colleghi il router alla rete provider esterna (solitamente denominata
publicnella maggior parte delle installazioni):openstack router set --external-gateway public my-router -
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.
-
Creare il gruppo di sicurezza:
openstack security group create my-security-group --description "Allows SSH and Ping" -
Aggiungere la regola SSH (consentire la porta 22):
openstack security group rule create --proto tcp --dst-port 22 my-security-group -
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:
(ad esempio, annotiopenstack image listUbuntu 22.04 LTS) -
Elencare le dimensioni/flavor disponibili:
(ad esempio, annotiopenstack flavor listm1.small) -
Elencare le coppie di chiavi SSH disponibili:
(Se non è ancora stata caricata una chiave, è possibile importare la chiave pubblica conopenstack keypair listopenstack 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:
-
Allocare un IP flottante dal pool pubblico:
(Questo comando restituisce un indirizzo IP, ad esempioopenstack floating ip create public185.123.45.67) -
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