OpenStack geeft je een aantal tools om je OpenStack-project mee te beheren: je kunt zowel via een webinterface als via command-line tools je project beheren.
In deze handleiding lopen we door alle stappen die nodig zijn om een nieuwe OpenStack-instance aan te maken in OpenStack via de command-line tools.
Voor de stappen in deze handleiding zijn de OpenStack command-line tools nodig. In onze 'OpenStack CLI tools installatie' laten we zien hoe je deze installeert.
Een keypair toevoegen
Een OpenStack-key pair is de 'public key' en de 'private key' van een 'ssh key pair'. Deze gebruik je in OpenStack om het wachtwoord op te vragen voor een Windows Server-instance of voor een SSH-verbinding van een Linux-instance.
Onze installatieimages maken gebruik van Cloud Init om bij de eerste start van de instance de key op de instance te plaatsen.
Start een terminal (Linux/MacOS) of PowerShell als administrator (Windows) en genereer een keypair met het commando:
openstack keypair create my_keypair > my_keypair.pem
Het is om veiligheidsredenen aan te raden om alleen de eigenaar van het bestand my_keypair.pem lees- en schijfrechten te geven. Gebruik hiervoor het commando:
chmod 600 my_keypair.pem
Windows-gebruikers kunnen in verkenner dit doen door met de rechtermuisknop op het bestand te klikken en 'Properties' te selecteren. In het tabblad 'Security' klik je op 'Advanced' en klik je op 'Disable Inheritance' > 'Apply'. Selecteer vervolgens 'Edit' en verwijder alle gebruikers behalve de gewenste gebruiker. Klik tot slot op 'Apply' > 'OK'.
Security Groups aanmaken
Een security group is simpel gezegd een vorm van een 'firewall op netwerkniveau' en is een vereiste om een OpenStack-instance aan te kunnen maken. Het controleert (in contrast tot de firewall binnen je besturingssysteem) verkeer op netwerkniveau, nog voordat het de eigenlijke instance bereikt.
Het aanmaken van een security group bestaat uit de volgende stappen:
- Een security group aanmaken.
- Alle bestaande regels verwijderen.
- Uitgaand verkeer toestaan.
- Specifieke poorten openen (in ieder geval voor RDP/SSH-verkeer).
Let wel dat als je na het maken van je instance je RDP-/SSH-poort zou veranderen je voor je de poort wijzigt eerst ook in je security group de betreffende poort opent.
Stap 1
Maak een security group aan met het commando:
openstack security group create <groupnaam>
Vervang <groupnaam> door een naam naar keuze en laat daarbij ook de haakjes weg. Let op dat je ook bij de volgende commando's <groupnaam> vervangt door de naam van je security group.
Stap 2
Een security group kan na het aanmaken om diverse redenen met een set vooraf bepaalde regels komen. Verwijder deze als volgt in Linux/MacOS:
for RULE_ID in $(openstack security group rule list <groupnaam> -f value -c ID) do openstack security group rule delete $RULE_ID done
of in Windows PowerShell:
$rules = openstack security group rule list --security-group <groupnaam> -f value -c ID $ruleIDs = $rules -split "`n" foreach ($ruleID in $ruleIDs) { openstack security group rule delete $ruleID }
Stap 3
Nu alle bestaande regels verwijderd zijn, maak je nieuwe regels aan. Sta om te beginnen al het uitgaand verkeer toe met het commando:
openstack security group rule create --proto any --egress <groupnaam>
Vervang <groupnaam> door de naam van de security group waar je de regel aan toevoegt.
Stap 4
Open naar wens specifieke poorten met het commando:
openstack security group rule create --protocol tcp --dst-port <poortnr> <groupnaam>
Vervang eventueel tcp door udp, <poortnr> door het gewenste poortnummer en <groupnaam> door de naam van de security group waar je de regel aan toevoegt, bijvoorbeeld:
# Add rule for HTTP openstack security group rule create --protocol tcp --dst-port 80 secgroup # Add rule for HTTPS openstack security group rule create --protocol tcp --dst-port 443 secgroup # Add rule for SSH openstack security group rule create --protocol tcp --dst-port 22 secgroup #Add rule for RDP openstack security group rule create --protocol tcp --dst-port 3389 secgroup
Hieronder laten we voor de volledigheid nog enkele veelgebruikte commando's zien voor het beheer van en werken met security groups die nog niet aan bod zijn gekomen. Deze hoef je nu nog niet uit te voeren; je kunt direct door naar de volgende paragraaf.
Ping (ICMP) verkeer toestaan
openstack security group rule create --protocol icmp <groupnaam>
Vervang <groupnaam> door de naam van de security group waar je de regel aan toevoegt.
Een security group verwijderen
openstack security group delete <groupnaam>
Vervang <groupnaam> door de naam van de security group die je wil verwijderen.
Regels tonen
openstack security group rule list <groupnaam>
Specifieke regels verwijderen
openstack security group rule delete $ID
Vervang $ID door het ID zoals zichtbaar in de output van het 'openstack security group rule list <groupnaam>'-commando.
Een private network aanmaken
Als je enkel gebruik maakt van het publieke internet en de instance niet aan een private/intern network wil koppelen, ga dan door naar de volgende paragraaf.
Als je je instance aan een private/intern network wil koppelen, maak dan het netwerk aan en wijs daar een IP-subnet aan toe via de stappen hieronder. Voor de volledigheid laten we ook zien hoe je je netwerken en subnets bekijkt en verwijdert.
Stap 1
Maak een private network aan met het commando:
openstack network create <private_network_naam>
Vervang <private_network_naam> door een naam naar keuze.
Stap 2
Wijs vervolgens een subnet (i.e. een ip-range) toe aan je private network.
openstack subnet create --network <private_network_naam> --subnet-range 192.168.0.0/24 <subnet_naam>
- Vervang <private_network_naam> door de naam van je private network
- Vervang <subnet_naam> door een naam voor je subnet
Dit commando reserveert automatisch het eerste IP-adres (hier 192.168.0.1) als default gateway.
Je kunt nu direct door naar de volgende paragraaf. Hieronder geven we je nog enkele commando's mee voor het beheren van je private networks.
Subnets tonen
openstack subnet list
Subnets verwijderen
openstack subnet delete $subnetID
Vervang $subnetID door het ID van het subnet dat je wil verwijderen (zie de output van het commando 'openstack subnet list').
Netwerken tonen
openstack network list
Netwerken verwijderen
openstack network delete $networkID
Vervang $networkID door het ID van het network dat je wil verwijderen (zie de output van het commando 'openstack network list').
Een instance aanmaken
Stap 1
Voor het aanmaken van een instance heb je een aantal zaken nodig:
- De ID van de security group waar de instance aan gekoppeld wordt.
- De ID van de netwerken waar de instance aan gekoppeld wordt (zowel public als private).
- De ID van de installatie image die je op de instance wil installeren.
- De ID van de flavor op basis waarvan je de instance aanmaakt.
- De naam van de keypair die je in de eerste paragraaf hebt aangemaakt.
De ID's vraag je op met respectievelijk de volgende commando's:
openstack security group list
openstack network list
openstack image list
openstack flavor list
Noteer de volgende gegevens:
- De ID van de security group die je aangemaakt hebt in stap 1 van de paragraaf 'Een security group aanmaken'.
- De ID's van het private network dat je in stap 1 van de paragraaf 'Een private network aanmaken' (indien van toepassing) en die van de netwerken 'net-public' en 'net-public-ipv6'.
- De ID van de installatie image/het besturingssysteem dat je wil installeren
- De ID van de flavors op basis waarvan je de instance wil aanmaken.
Stap 2
Maak nu een instance aan met behulp van deze gegevens. Vervang daarbij placeholders zoals <ImageID> door de ID die je in de vorige stap hebt genoteerd, <my_keypair> door de naam van je key pair uit de eerste paragraaf, en <demo_instance> door de naam die je aan de instance wil meegeven (verwijder ook de < >):
Als je die niet specificeert, wordt voor het private network het eerst beschikbare IP-adres binnen je subnet gebruikt. Voor je publieke IPv4- en IPv6-adres wordt automatisch een beschikbaar adres toegewezen.
Linux/MacOS:
openstack server create \ --image <ImageID> \ --flavor <FlavorID> \ --key-name <my_keypair> \ --network <PrivNetworkID> \ --network <PubNetworkID> \ --network <PubIPv6NetworkID> \ --security-group <SecgroupID> \ <demo_instance>
Windows PowerShell:
In Windows PowerShell moet het gehele commando op één regel uitgeschreven worden (let op de scrollbalk):
openstack server create --image <ImageID> --flavor <FlavorID> --key-name my_keypair --network <PrivNetworkID> --network <PubNetworkID> --network <PubIPv6NetworkID> --security-group <SecgroupID> demo_instance
Een voorbeeld met de security group 'demogroup', een private network 'demonetwork', installatie op basis van Ubuntu 22.04 op een Standard 4GB flavor:
Linux/MacOS:
openstack server create \ --image 6e4b4289-22d2-4c8b-8a61-18266e4f1a04 \ --flavor 1004 \ --key-name my_keypair \ --network 03708997-16bd-43d8-9b51-24e3b3d6a759 \ --network
81f28916-fb20-49e6-a8d9-622325069cac\ --network
83f9a88b-c933-4586-ae8a-7a399ff794f8\ --security-group c6347cbb-f3cb-432b-8f9d-3f072cb78aec \ demo_instance
Windows PowerShell:
In Windows PowerShell moet het gehele commando op één regel uitgeschreven worden (let op de scrollbalk):
openstack server create --image 6e4b4289-22d2-4c8b-8a61-18266e4f1a04 --flavor 1004 --key-name my_keypair --network 03708997-16bd-43d8-9b51-24e3b3d6a759 --network
81f28916-fb20-49e6-a8d9-622325069cac--network
83f9a88b-c933-4586-ae8a-7a399ff794f8--security-group c6347cbb-f3cb-432b-8f9d-3f072cb78aec demo_instance
Je krijgt een bevestiging te zien die er ongeveer als volgt uitziet:
+-----------------------------+-----------------------------------------------------------+ | Field | Value | +-----------------------------+-----------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | AMS-EQ1 | | OS-EXT-STS:power_state | NOSTATE | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | None | | OS-SRV-USG:terminated_at | None | | accessIPv4 | | | accessIPv6 | | | addresses | | | adminPass | Rfgw7KjMmLsj | | config_drive | | | created | 2023-08-03T13:36:00Z | | flavor | Standard 4GB (1004) | | hostId | | | id | 3614d853-0991-4a40-ba2f-9bcee920151b | | image | Ubuntu 22.04 (LTS) (6e4b4289-22d2-4c8b-8a61-18266e4f1a04) | | key_name | my_keypair | | name | demo_instance | | progress | 0 | | project_id | 45c8362ff22e4dfda722e999af592872 | | properties | | | security_groups | name='c6347cbb-f3cb-432b-8f9d-3f072cb78aec' | | status | BUILD | | updated | 2023-08-03T13:36:00Z | | user_id | tip:a283a80bb8ff4d2a8db81eea7adec887 | | volumes_attached | | +-----------------------------+-----------------------------------------------------------+
Gefeliciteerd! Je instance is zojuist aangemaakt. Nuttige informatie zoals de IP-adressen die aan de instance zijn toegewezen zie je terug met het commando:
openstack server show <servernameorid>
Vervang <servernameorid> door de name of het ID zoals zichtbaar in de output van het commando waarmee je de instance hebt aangemaakt.