So erzeugen und verwenden Sie Anwendungsinformationen über CLI auf EO-Lab
Sie können Ihre Anwendungen bei OpenStack keystone authentifizieren, indem Sie Anwendungsberechtigungen dafür erstellen. Sie können auch einzelne Rollen für ein Projekt auswählen und die entsprechenden Berechtigung zuweisen. Mit Application Credentials authentifizieren sich Apps mit der „Application Credential ID“ und einem „geheimen“ String, der nicht das Passwort des Benutzers ist. Dadurch wird das Kennwort des Benutzers nicht in die Konfiguration der Anwendung eingebettet, was besonders für Benutzer wichtig ist, deren Identitäten von einem externen System wie LDAP oder einem Single-Sign-On-System verwaltet werden.
Voraussetzungen
Nr. 1 Konto
Sie benötigen ein EO-Lab Konto mit Horizon-Schnittstelle https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.
Nr. 2 Installation des OpenStack Client für Linux
Wie installiert man den OpenStackClient (Linux)?.
Nr. 3 Installation von OpenStack Client auf Windows
So installieren Sie den OpenStackClient (Windows) unter Verwendung von GitBash/Cygwin
Step 1 Zugriff auf Ihr Cloud-Projekt mit OpenStackClient
Unter Voraussetzungen Nr 2. oder 3. müssen Sie zuerst
Python installieren, dann seine
virtuelle Umgebung und schließlich
den Befehl source cloudXXX_openrc.sh verwenden, um den Zugriff auf Ihr Cloud-Projekt über openstack zu aktivieren. Zusammengefasst sehen diese Befehle wie folgt aus:
cd /Users/duskosavic/CloudFerroDocs
source bin/activate
source ./cloud_00341_1-openrc7.sh
wobei CloudFerroDocs der Ordner ist, in dem Python installiert ist, source bin/activate eine virtuelle Python-Umgebung aktiviert und der letzte Befehl alle erforderlichen Parameter für die Verbindung mit dem Cloud-Projekt cloud_00341_1 einrichtet.
Der dritte Befehl fragt nach einem Kennwort. Das ist das Kennwort, das Sie für den Zugang zur Cloud verwenden. Das kann in bestimmten Fällen äußerst unpraktisch sein, z.B. wenn es Sicherheitsbedenken gibt oder wenn die Identitäten der Nutzer von einem externen System wie LDAP verwaltet werden.
Im Terminal-Fenster sieht das so aus:

Die virtuelle Umgebung heißt hier (py3-sphinx).
Sie müssen diese Befehle zu Beginn jeder Sitzung im Terminal ausführen.
Um zu überprüfen, ob der Zugriff korrekt initialisiert wurde, geben Sie diesen Befehl ein:
openstack flavor list
Es wird eine Liste von Systemvarianten angezeigt:

Sie werden diesen Befehl am Ende dieses Artikels verwenden, um zu überprüfen, ob Sie OpenStack CLI ohne Aktivierung der virtuellen Python-Umgebung und ohne Eingabe des Passworts verwenden können.
Schritt 2 OpenStack CLI-Befehle für Anwendungsinformationen (Application Credentials)
Das Kommando
openstack application credential
listet vier verfügbare Befehle auf:
application credential create
application credential delete
application credential list
application credential show
Um die Parameter für diese Befehle anzuzeigen, fügen Sie –help am Ende hinzu:
openstack application credential create --help
Unter den Dutzenden von Zeilen, in denen alle möglichen Parameter beschrieben werden, sind die Befehle zum Erstellen von neuen Anwendungsinformationen besonders interessant:

Bemerkung
Die Option –help erzeugt eine vim-ähnliche Ausgabe, geben Sie also q auf der Tastatur ein, um zur normalen Terminalzeile zurückzukehren.
Schritt 3 Der einfachste Weg, neue Anwendungsinformationen zu erstellen
Der einfachste Weg, neue Anwendungsinformationen zu erstellen, besteht darin, nur den Namen festzulegen - die restlichen Parameter werden automatisch für Sie definiert. Der folgende Befehl verwendet den Namen cred2:
openstack application credential create cred2
Die neuen Anwendungsdaten werden erzeugt und auf dem Bildschirm angezeigt:

Schritt 4 Verwenden aller Parameter zum Erstellen einer neuen Anwendungsberechtigung
Hier die Bedeutung der entsprechenden Parameter:
–secret
Für die Authentifizierung zu verwendender Geheimschlüssel. Wenn nicht angegeben, wird er automatisch generiert.
–role
Zu autorisierende Rollen. Wenn nichts angegeben wird, werden alle Rollen des aktuellen Benutzers kopiert. Wiederholen Sie diesen Parameter, um eine weitere Rolle anzugeben, die Teil des Credentials werden soll. Folgende Rollen sind verfügbar:
_member_ magnum_user load-balancer_member heat_stack_owner creator k8s_admin
Bemerkung
Die Rolle _member_ ist die elementarste Rolle und sollte immer vorhanden sein. Beachten Sie jedoch, dass sie in einigen Varianten von OpenStack member statt _member_ heißen kann.
–expiration
Legt ein Verfallsdatum fest. Ist es nicht vorhanden, läuft die Anwendungsberechtigung nicht ab. Das Format ist YYYY-mm-ddTHH:MM:SS, zum Beispiel:
--expiration $(date +"%Y-11-%dT%H:%M:%S")
Daraus ergibt sich Datum zusammengesetzt aus dem aktuellen Jahr, dem Monat November und aktuellem Tag/Stunde/Minute/Sekunde. Im gewählten Beispiel:
2022-11-09T13:27:01.000000
Die Parameter –unrestricted bzw. –restricted
In der Grundeinstellung ist es aus Sicherheitsgründen verboten, Anwendungsberechtigungen für die Erstellung weiterer Anwendungsberechtigungen oder Keystone Trusts zu verwenden. Wenn Ihre Anwendung in der Lage sein muss, diese Aktionen durchzuführen, verwenden Sie den Parameter –unrestricted.
Hier ist ein vollständiges Beispiel, das alle verfügbaren Parameter verwendet, um einen neuen Anwendungsnachweis zu erstellen:
openstack application credential create foo-dev-member4 --role _member_ --expiration $(date +"%Y-11-%dT%H:%M:%S") --description "Test application credentials" --unrestricted -c id -c secret -f json | jq -r '"application_credential_id: \"" + .id + "\"", "application_credential_secret: \"" + .secret + "\""'
Das Ergebnis ist:

Der Name des neuen Anwendungsdatensatzes lautet foo-dev-member4, er wird von der Rolle _member_ verwendet und so weiter. Der Teil des Befehls, der mit | jq -r beginnt, gibt nur die Werte der Anmeldeinformationen id und secret aus, da Sie diese Werte in die Datei clouds.yml eingeben müssen, mit der Sie die Identifikation mit OpenStack CLI aktivieren.
Schritt 5 Eingabe von id und secret in die Datei clouds.yml
Speichern Sie nun die Werte id und secret, die Sie mit dem OpenStack CLI erzeugt haben. Sobald sie gespeichert sind, werden zukünftige openstack-Befehle diese Werte verwenden, um sich bei der Cloud zu authentifizieren, ohne irgendein Passwort zu verwenden.
Speichern Sie id und secret in einer Datei namens clouds.yml. Sie muss sich auf Ihrem lokalen Computer an einem der folgenden drei Orte befinden:
Ihrem aktuellen Verzeichnis
$HOME/.config/openstack/clouds.yml
/etc/openstack/clouds.yml
Es wird die erste gefundene clouds.yml-Datei verwendet. $HOME/.config/openstack/clouds.yml ist die beliebteste, da sie von allen Teilen des Systems aus leicht zugänglich ist.
Bemerkung
Der Inhalt der Datei clouds.yml liegt im Format yaml (kurz für: „yet another markup language“ bzw. „2YAML ain’t markup language“) vor. Üblicherweise ist die Erweiterung von yaml-Inhalten die gleiche Abkürzung yaml. Hier wird stttdessen yml verwendet.
Erstellen wir einen neuen Anwendungsdatensatz namens trial-member_creatornew.
openstack application credential create trial-member_creatornew --unrestricted -c id -c secret -f json | jq -r '"application_credential_id: \"" + .id + "\"", "application_credential_secret: \"" + .secret + "\""'
Dies ist das Ergebnis:

Erstellen Sie nun die Datei clouds.yml mit einem Editor Ihrer Wahl. Hier verwenden wir nano:
nano $HOME/.config/openstack/clouds.yml
Falls noch nicht vorhanden, erstellt nano diese Datei. Hier ist der Inhalt dieser Datei:
clouds:
trial-member_creatornew:
auth_type: "v3applicationcredential"
auth:
auth_url: https://keystone.cloudferro.com:5000/v3
application_credential_id: "a582edb593644106baeaa75fd706feb2"
application_credential_secret: "mPKQort71xi7Ros7BHb1sG4753wvN_tmJMBd1aRBBGzgFZM7AoUkLWzCutQuh-dAyac86-rkikYqqYaT1_f0hA"
Lassen Sie uns diese Datei Zeile für Zeile zerlegen:
clouds: steht im Plural, da es möglich ist, die Parameter von zwei oder mehr Clouds in derselben Datei zu definieren.
trial-member_creatornew ist der Name des Anwendungsdatensatzes, der im vorherigen Befehl credential create verwendet wurde.
trial-member_creatornew ist die Art der Autorisierungsverbindung (sie ist immer dieselbe)
auth definiert den Beginn der **Authentifizierungs-**parameter
auth_url die aufzurufende Adresse auf dem OpenStack-Server (sie ist immer dieselbe)
application_credential_id der Wert aus dem vorherigen Aufruf des Befehls credential create
application_credential_secret der Wert aus dem vorherigen Aufruf des Befehls credential create.
So sollte es im Editor aussehen:

Speichern Sie es mit Strg-X, drücken Sie dann Y und Enter.
Schritt 6 Zugriff auf Cloud-Projekte durch Angabe von OS_CLOUD oder –os-cloud
Im vorherigen Schritt haben Sie eine Datei clouds.yml definiert, die mit clouds: beginnt. Die nächste Zeile definiert, auf welche Cloud sich die Parameter beziehen, hier war es trial-member_creatornew. Da die Datei clouds.yml nicht nur eine, sondern mehrere Clouds enthalten kann, ist es notwendig zu unterscheiden, auf welche Cloud Sie sich beziehen. Dafür gibt es einen speziellen Parameter, genannt
OS_CLOUD bei Verwendung als Systemparameter oder
–os-cloud bei Verwendung von der Befehlszeile.
Sie definieren OS_CLOUD, indem Sie den Wert direkt in der Befehlszeile eingeben:
export OS_CLOUD=trial-member_creatornew
echo $OS_CLOUD
Öffnen Sie ein neues Terminalfenster, führen Sie den obigen Befehl aus und versuchen Sie dann, auf den Server zuzugreifen:

Es funktioniert.
Sie können diesen Parameter auch in der Befehlszeile verwenden:
openstack --os-cloud=trial-member_creatornew flavor list
Es funktioniert genauso:

Sie müssen OS_CLOUD einmal beim Öffnen eines neuen Terminalfensters einrichten und können dann den Befehl openstack verwenden, ohne den Parameter –os-cloud neu einzugeben.
Wenn Sie zwei oder mehr Clouds in der Datei clouds.yml definiert haben, dann wäre die Verwendung von –os-cloud in der Befehlszeile flexibler.
In beiden Fällen können Sie auf die Cloud zugreifen, ohne das Kennwort anzugeben, was ja das eigentliche Ziel war.