Allgemeine Informationen
Anleitung | |
---|---|
Informationen | |
Betriebssystem | Alle |
Service | Cloudcomputing |
Interessant für | Angestellte, Studierende und Gäste |
HilfeWiki des ZIM der Uni Paderborn |
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht. |
OpenStack bietet als Alternative zur Steuerung per Weboberfläche, die Steuerung per API-Schnittstelle an. Mithilfe des OpenStack Kommandozeilen-Clients können Sie diese Schnittstelle nutzten.
Rezepte[Bearbeiten | Quelltext bearbeiten]
Was ist zu tun?[Bearbeiten | Quelltext bearbeiten]
- Python, PIP und Kommandozeilen-Client installieren
- Zugangsdaten erstellen und einrichten
- Verbindung testen
- Arbeiten mit dem Kommandozeilen-Client
- Erstellung von Datenträger, Netzwerk, Instanz
Kommandozeilen Client installieren[Bearbeiten | Quelltext bearbeiten]
Zunächst müssen Sie den Kommandozeilen-Client auf ihrem Computer (oder einer virtuellen Maschine) installieren. Dieser wird als Python-Paket bereitgestellt und lässt sich mithilfe des Packetmanagers PIP installieren. Sie sollten also zunächst sicherstellen, dass Python auf ihrem System installiert ist. Eine Anleitung finden Sie im Python Wiki im Beginners Guide.
Wenn Sie Python erfolgreich installiert haben, müssen Sie noch den Packetmanager PIP installieren. Eine Anleitung und ein Installationsscript wird in der PIP Dokumentation bereitgestellt. Darüberhinaus benötigen Sie das Packet python3-lxml
, eine Anleitung dazu finden Sie auf der lxml-Website.
Ist beides erfolgreich abgeschlossen, können Sie nun den OpenStack Kommandozeilen-Client installieren.
Geben Sie dazu den Befehl pip install python-openstackclient==5.2.1
ein.
PIP installiert nun automatisch den Client und alle nötigen Abhängigkeiten.
Überprüfen Sie, ob die Installation erfolgreich war mit dem Befehl openstack --version
.
Sie sollten folgende Ausgabe erhalten:
openstack 5.2.1
Zugangsdaten erzeugen[Bearbeiten | Quelltext bearbeiten]
Damit Sie sich mit Ihrem OpenStack Projekt verbinden können, müssen Sie zunächst Zugangsdaten erzeugen. Dazu melden Sie sich auf der Weboberfläche unter rdi-cloud.uni-paderborn.de an. In der Menüleiste auf der linken Seite finden Sie unter Identität den Punkt Applikations-Zugangsdaten.
Klicken Sie auf den Button Applikations-Zugangsdaten erstellen, vergeben Sie einen Namen für den Zugang und klicken auf Erstellen.
Es öffnet sich ein Fenster, dort wird das Geheimnis (ein einmalig vergebener Token) angezeigt. Klicken Sie auf den Button openrc-Datei herunterladen. In dieser Datei befindet sich der Token, sowie einige andere Zugangsdaten die Sie zur Anmeldung über den Kommandozeilen-Client benötigen.
Bei der openrc-Datei handelt es sich im ein Bash-Script mit dessen Hilfe Umgebungsvariablen gesetzt werden, auf die der OpenStack Kommandozeilen-Client zugreift.
Um die Variablen zu setzten geben Sie den Befehl source
und den Pfad zu ihrer heruntergeladenen openrc-Datei an.
Hinweis: Der Befehl source
besitzt keine Ausgabe - Sie bekommen also keine Rückmeldung, ob die Ausführung erfolgreich war.
Beispiel:
source /kochbuch/openrc.sh
Verbindung testen[Bearbeiten | Quelltext bearbeiten]
Um die Verbindung zum OpenStack Projekt zu testen, lassen Sie eine Auflistung der Verfügbaren Images ausgeben.
Dies können Sie mit dem Befehl openstack image list
machen.
Wenn eine Verbindung besteht, sollten Sie folgende Ausgabe erhalten:
$ openstack image list
+--------------------------------------+--------------------+--------+
| ID | Name | Status |
+--------------------------------------+--------------------+--------+
| 032df287-7ce0-4d01-abcf-ef693d653c67 | CentOS 7 1901 | active |
| f6607948-f67a-4295-8b87-7a9e5e88ce7e | CentOS 8.1.1911 | active |
| 51660f5a-ad26-4d93-b918-d75121eb65b0 | CoreOS 33.20210314 | active |
| d74e63e8-2adb-406f-9444-d88b7cf00f02 | Debian 10.9 | active |
| 4de1f9ce-8f57-4897-ab95-7f3f1fa6d2bb | Fedora 33 | active |
| f8fdc48b-55d5-4b65-b18e-c907c70be884 | Rancher-1.5.8 | active |
| c315dc8d-8a9a-499d-a03e-9988d246bb77 | Ubuntu 20.04 | active |
+--------------------------------------+--------------------+--------+
Damit ist die Einrichtung des OpenStack Kommandozeilen-Client abgeschlossen.
Nutzung, Befehle und Hilfe[Bearbeiten | Quelltext bearbeiten]
Um den OpenStack Kommandozeilen-Client zu öffnen müssen Sie nur den Befehl openstack
eingeben.
Hier einige Grundlegende Befehle, um mit dem Client zu arbeiten. Eine Einführung in die Nutzung des Clients und eine Übersicht der verfügbaren Befehle bietet auch das OpenStack Wiki.
Befehl | Beschreibung |
---|---|
help | Gibt eine Übersicht der verfügbaren Befehle aus |
command list | Gibt eine strukturierte Übersicht der Befehle aus |
configuration show | Gibt die aktuelle Konfiguration des OpenStack-Clients aus |
image list | Gibt eine Übersicht der verfügbaren Images aus |
volume list | Gibt eine Übersicht der Datenträger aus |
network list | Gibt eine Übersicht der Netzwerke aus |
server list | Gibt eine Übersicht der Instanzen aus |
flavor list | Gibt eine Übersicht der verfügbaren Flavor aus |
container list | Gibt eine Übersicht aller Container aus |
keypair list | Gibt eine Übersicht der Schlüsselpaare aus |
security group list | Gibt alle verfügbaren Sicherheitsgruppen aus |
quota show | Gibt die verfügbaren Ressourcen des Projektes aus |
Datenträger erstellen[Bearbeiten | Quelltext bearbeiten]
Wie in der Weboberfläche von OpenStack auch, müssen Sie zunächst einen Datenträger anhand eines Images erstellen, von dem die Instanz starten kann.
Der Aufbau des Kommandos sieht so aus: volume create --image [ID des Image] --size [Größe in GB] [Name]
Um nun einen 10 GB großen Datenträger anhand des Ubuntu 20.04 Images zu erstellen, kopieren Sie sich die ID des Images und legen einen neuen Datenträger an:
(openstack) image list
+--------------------------------------+--------------------+--------+
| ID | Name | Status |
+--------------------------------------+--------------------+--------+
| 032df287-7ce0-4d01-abcf-ef693d653c67 | CentOS 7 1901 | active |
| f6607948-f67a-4295-8b87-7a9e5e88ce7e | CentOS 8.1.1911 | active |
| 51660f5a-ad26-4d93-b918-d75121eb65b0 | CoreOS 33.20210314 | active |
| d74e63e8-2adb-406f-9444-d88b7cf00f02 | Debian 10.9 | active |
| 4de1f9ce-8f57-4897-ab95-7f3f1fa6d2bb | Fedora 33 | active |
| f8fdc48b-55d5-4b65-b18e-c907c70be884 | Rancher-1.5.8 | active |
| c315dc8d-8a9a-499d-a03e-9988d246bb77 | Ubuntu 20.04 | active |
+--------------------------------------+--------------------+--------+
(openstack) volume create --image c315dc8d-8a9a-499d-a03e-9988d246bb77 --size 10 ubuntu-20.04-kochbuch
+---------------------+------------------------------------------------------------------+
| Field | Value |
+---------------------+------------------------------------------------------------------+
| attachments | [] |
| availability_zone | AvailabilityZone1 |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2021-06-09T11:36:17.000000 |
| description | None |
| encrypted | False |
| id | 5c13c705-8f32-49d2-b911-a5e8608ce6c9 |
| multiattach | False |
| name | ubuntu-20.04-kochbuch |
| properties | |
| replication_status | None |
| size | 10 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | replicated_bronze |
| updated_at | None |
+---------------------+------------------------------------------------------------------+
(openstack) volume list
+--------------------------------------+--------------------------+-----------+------+---------------------------------------------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+--------------------------+-----------+------+---------------------------------------------------+
| 5c13c705-8f32-49d2-b911-a5e8608ce6c9 | ubuntu-20.04-kochbuch | available | 10 | |
+--------------------------------------+--------------------------+-----------+------+---------------------------------------------------+
Netzwerk erstellen[Bearbeiten | Quelltext bearbeiten]
Zunächst legen Sie ein Netzwerk an und vergeben einen Namen, dann fügen Sie dem Netzwerk ein Subnetz mit einem definierten Adressbereich hinzu.
Der Aufbau des Befehls sieht so aus: network create [Name]
(openstack) network create kochbuch-lan
+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2021-06-09T12:59:00Z |
| description | |
| dns_domain | |
| id | 86377e53-e0a3-4e3c-81ae-16632e8b1b5f |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| location | cloud='', project.domain_id=, project.domain_name=, project.id='d618928906214a2b817ca0fac89ff171', project.name=, region_name='upb1', zone= |
| mtu | 8942 |
| name | kochbuch-lan |
| port_security_enabled | True |
| project_id | d618928906214a2b817ca0fac89ff171 |
| provider:network_type | None |
| provider:physical_network | None |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 1 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
Nun erstellen Sie das Subnet und fügen es zum vorher erstellten Netzwerk hinzu:
subnet create --subnet-range [Adressbereich in CIDR-Notation] --network [Name des Netzwerks] [Name]
(openstack) subnet create --subnet-range 192.168.0.1/24 --network kochbuch-lan kochbuch-subnet
+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| allocation_pools | 192.168.0.2-192.168.0.254 |
| cidr | 192.168.0.0/24 |
| created_at | 2021-06-09T13:01:40Z |
| description | |
| dns_nameservers | |
| dns_publish_fixed_ip | None |
| enable_dhcp | True |
| gateway_ip | 192.168.0.1 |
| host_routes | |
| id | 44d99baf-6dc5-4ff3-ad8e-9d70b0c6b3ed |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| location | cloud='', project.domain_id=, project.domain_name=, project.id='d618928906214a2b817ca0fac89ff171', project.name=, region_name='upb1', zone= |
| name | kochbuch-subnet |
| network_id | 86377e53-e0a3-4e3c-81ae-16632e8b1b5f |
| prefix_length | None |
| project_id | d618928906214a2b817ca0fac89ff171 |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
Damit aus dem Subnetz auch in das Internet geroutet werden kann muss noch ein Router erzeugt werden:
router create [Name]
(openstack) router create kochbuch-router
+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2021-06-09T14:05:54Z |
| description | |
| external_gateway_info | null |
| flavor_id | None |
| id | 18af0660-f585-4f73-a209-1a712875ced5 |
| location | cloud='', project.domain_id=, project.domain_name=, project.id='d618928906214a2b817ca0fac89ff171', project.name=, region_name='upb1', zone= |
| name | kochbuch-router |
| project_id | d618928906214a2b817ca0fac89ff171 |
| revision_number | 1 |
| routes | |
| status | ACTIVE |
| tags | |
+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
Dieser wird mit dem externen Netzwerk und dem gewünschten Subnetz verbunden
(openstack) router set --external-gateway external kochbuch-router
(openstack) router add subnet kochbuch-router kochbuch-subnet
(openstack) router show kochbuch-router
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | nova |
| created_at | 2021-06-09T14:05:54Z |
| description | |
| external_gateway_info | {"network_id": "0d668bae-752e-4072-9be2-01b1af771733", "external_fixed_ips": [{"subnet_id": "4220a295-f7d6-4a0d-a30c-9c0f5b473cd5", "ip_address": "192.26.181.34"}, {"subnet_id": "1e7c011e-d94f-4e93-ac68-8e8b873cdfb8", "ip_address": "2001:638:502:fc40::34"}], "enable_snat": true} |
| flavor_id | None |
| id | 18af0660-f585-4f73-a209-1a712875ced5 |
| interfaces_info | [{"port_id": "39b0b2ed-f08d-482d-9152-29ccd6c6f635", "ip_address": "192.168.0.1", "subnet_id": "9e444d4a-ef77-4dba-aaf1-364dcceea238"}] |
| location | cloud='', project.domain_id=, project.domain_name=, project.id='d618928906214a2b817ca0fac89ff171', project.name=, region_name='upb1', zone= |
| name | kochbuch-router |
| project_id | d618928906214a2b817ca0fac89ff171 |
| revision_number | 4 |
| routes | |
| status | ACTIVE |
| tags | |
| updated_at | 2021-06-09T14:12:13Z |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Instanz erzeugen[Bearbeiten | Quelltext bearbeiten]
Schließlich können Sie die Instanz erzeugen. Dazu geben Sie folgende Punkte an:
server create --volume [Name des Datenträgers] --flavor [Name des Flavors] --security-group [Namen der Sicherheitsgruppen] --key-name [Name des Schlüsselpaars] --network [Name des Netzwerks] [Name]
(openstack) server create --volume ubuntu-20.04-kochbuch --flavor small --security-group SSH --security-group ICMP --key-name uni_pb --network kochbuch-lan kochbuch-server
+-----------------------------+------------------------------------------------------------------+
| Field | Value |
+-----------------------------+------------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| 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 | |
| config_drive | |
| created | 2021-06-09T13:13:19Z |
| flavor | small (small) |
| hostId | |
| id | 84aeffe4-a6a1-4fe1-8bdb-1ab01c968bf6 |
| image | |
| key_name | uni_pb |
| name | kochbuch-server |
| progress | 0 |
| project_id | d618928906214a2b817ca0fac89ff171 |
| properties | |
| security_groups | name='7c163bd5-e663-487d-95a4-8b3a38d47de9' |
| | name='c4b8c3c3-b54a-49b5-9d19-dbfcc15ec28e' |
| status | BUILD |
| updated | 2021-06-09T13:13:19Z |
| volumes_attached | |
+-----------------------------+------------------------------------------------------------------+
Floating IP zuweisen[Bearbeiten | Quelltext bearbeiten]
Über floating ip list
können Sie sich die verfügbaren Floating IPs anzeigen lassen.
Um eine der Adressen der Instanz zuzuordnen verwenden Sie folgendes Muster:
server add floating ip [Name der Instanz] [Floating IP-Adresse]
Nun können Sie sich per SSH mit der Instanz verbinden:
ssh -i [Pfad zu ihrem Schlüssel] ubuntu@[Floating IP]