Teil 1 von 2: Warum UUIDs in OpenStack besser sind als einfache Namen

In großen Systemen wie OpenStack, die zur Verwaltung von Cloud-Computing-Ressourcen verwendet werden, muss jedes Element eindeutig identifiziert werden können. Dies könnte eine virtuelle Maschine, ein Netzwerk oder ein Speicherplatz sein. Es mag zwar einfacher erscheinen, schlichte Namen wie Server1 oder MeinNetzwerk zu verwenden, aber es gibt eine viel bessere Methode, diese Ressourcen zu identifizieren: mit UUIDs.

Aber was genau ist eine UUID, und warum ist sie so wichtig?

Was ist eine UUID?

Eine UUID, oder Universally Unique Identifier (universell eindeutiger Bezeichner), ist eine lange Zeichenfolge, die zufällig generiert wird. Sie ist wie ein Fingerabdruck für jedes Element und stellt sicher, dass kein Element den gleichen Bezeichner hat, sogar weltweit.

Warum nicht einfach Namen verwenden?

Einfache Namen, wie mailserver oder k8s_controller_1, sind leicht zu merken und unkompliziert. Aber wenn man anfängt, mit großen Systemen zu arbeiten oder wenn viele Menschen dasselbe System nutzen, stellen einfache Namen keine einfache Lösung mehr dar.

Im Folgenden werden die verbundenen Fragestellungen beleuchtet und wie UUIDs sie auflösen können.

Eindeutigkeit in einer großen Welt

Wenn mehrere Personen oder Unternehmen dasselbe System verwenden, ist die Wahrscheinlichkeit groß, dass sie denselben Namen für verschiedene Objekte wählen. Das führt oft zu Verwirrung oder Fehlern. UUIDs sind eindeutig, was bedeutet, dass selbst wenn eine Million Objekte gleichzeitig erstellt werden, jedes eine andere Kennung erhält – keine Konflikte, keine Verwirrung.

Konsistenz und Zuverlässigkeit

In vielen Systemen können Namen geändert werden. Zum Beispiel kann eine VM in OpenShift von ansible_controller_test in ansible_controller umbenannt werden. Aber wenn diese VM eine UUID statt nur eines Namens hätte, wüsste das System immer, von welcher VM die Rede ist, egal wie oft sie umbenannt wird. Dies macht UUIDs sehr zuverlässig – einmal vergeben, bleibt eine UUID immer gleich.

Schmerzlose Skalierung

Stellen Sie sich vor, Sie betreiben ein System mit Tausenden oder sogar Millionen von Elementen. Einfache Namen in einer so großen Umgebung zu verwalten, ist, gelinde gesagt, eine Herausforderung. UUIDs lösen dieses Problem für Sie, indem sie jedem Element automatisch eine eindeutige Kennung zuweisen, ohne dass jemand darüber nachdenken muss.

Sicherheit

UUIDs sind lang und zufällig, was es schwierig macht, sie zu erraten. Wenn jemand auf etwas zugreifen möchte, auf das er oder sie nicht zugreifen sollte, ist es praktisch unmöglich, eine lange, zufällige UUID herauszufinden, anstatt einen einfachen Namen wie mailserver. Das bietet eine zusätzliche Sicherheitsebene.

Zusammenarbeit mit anderen

In Systemen wie OpenStack könnten verschiedene Personen, Abteilungen oder Unternehmen dieselben Ressourcen teilen. Einfache Namen können da schnell schwierig werden – stellen Sie sich vor, zwei verschiedene Abteilungen nennen ihren Fileserver, nun ja, fileserver. Aber mit UUIDs weiß das System, dass sie unterschiedlich sind, auch wenn sie denselben Namen verwenden, da ihre UUIDs einzigartig sind.

Optimale Unterstützung von Automatisierung

UUIDs sind ideal für die Automatisierung der Verwaltung großer Mengen von Objekten mit Skripten oder Programmen. Sie stellen sicher, dass jedes Objekt jedes Mal korrekt identifiziert wird. Das ist besonders wichtig in großen Cloud-Systemen, in denen viele Dinge automatisch ohne menschliche Aufsicht ablaufen.

Fazit

Auch wenn einfache Namen auf den ersten Blick einfacher erscheinen mögen, bieten UUIDs eine viel bessere Methode zur Verwaltung von Ressourcen in großen, komplexen Systemen wie OpenStack. Sie stellen sicher, dass jedes Objekt eindeutig identifizierbar, zuverlässig, sicher und leicht zu verwalten ist, selbst wenn das System wächst. UUIDs helfen dabei, alles organisiert und reibungslos am Laufen zu halten und sind daher die klügere Wahl in der Welt des Cloud-Computing.

Teil 2 von 2: Wie Sie in OpenStack gleichzeitig einfache Namen und UUIDs verwenden können

In OpenStack können Sie sowohl einfache Namen als auch UUIDs gleichzeitig verwenden, um Ressourcen effektiv zu verwalten. Diese Methode kombiniert die Benutzerfreundlichkeit von Namen mit der Zuverlässigkeit und Eindeutigkeit von UUIDs. Im Folgenden werden die dazu notwendigen Schritte vorgestellt.

Ressourcen Namen zuweisen

Wenn Sie Ressourcen wie virtuelle Maschinen, Netzwerke oder Volumes in OpenStack erstellen, können Sie ihnen einen leicht zu merkenden Namen zuweisen. Dies erleichtert es den Benutzern, die Ressourcen im täglichen Betrieb wiederzuerkennen.

Der Befehl
openstack server create --name MeinServer --image B1.Ubuntu --flavor 2C-8GB-20GB erzeugt eine Virtuelle Maschine in OpenStack mit installiertem Betriebssystem vom (angepassten) Image B1.Ubuntu. Das ganze wird auf einem System mit 2 Cores, 8 GB Arbeitsspeicher und 20 GB Festplattenplatz bereit gestellt.

Zugriff auf Ressourcen über UUIDs

Jede Ressource in OpenStack erhält automatisch eine UUID. Diese UUID ist einzigartig und unveränderlich, was sicherstellt, dass jede Ressource präzise identifiziert werden kann, selbst wenn der Name nicht eindeutig ist oder später geändert wird.

Der Befehl openstack server show d7f5e5f8-cfda-4bfa-b5e1-8d4a7c5e6f58 zeigt die sonstigen Attribute wie Name, Flavor etc. des Servers mit der angegebenen UUID.

Verwendung von Namen und UUIDs in Befehlen

Befehle mit Namen: Sie können in vielen OpenStack-CLI-Befehlen oder API-Aufrufen auf eine Ressource mit ihrem Namen verweisen. Dies ist praktisch für Benutzer, die sich die von ihnen vergebenen Namen merken.
Ein Beispiel-Befehl könnte sein: openstack server delete MeinServer.

Achtung: Diese Art der Adressierung kann bei mehreren Ressourcen gleichen Namens problematisch werden. Best Practice ist immer die Verwendung von UUIDs. Wie Sie die UUID herausfinden können, wird später erläutert

Befehle mit UUIDs: Für Skripte, Automatisierung oder bei potenziellen Namenskonflikten können Sie die UUID verwenden. Dies ist besonders nützlich in Umgebungen mit vielen Benutzern oder Ressourcen, in denen Namen möglicherweise nicht eindeutig sind. So sieht der vorherige Befehl entsprechend umgeschrieben aus: openstack server delete d7f5e5f8-cfda-4bfa-b5e1-8d4a7c5e6f58.

Suche nach Namen zur Ermittlung von UUIDs

Sie können den Namen einer Ressource verwenden, um ihre UUID nachzuschlagen. Dies ist hilfreich, wenn Sie den Namen kennen, aber eine Operation durchführen müssen, die die UUID erfordert.

Der Befehl
openstack server list --name MeinServer
gibt eine Liste der Server mit dem Namen MeinServer zusammen mit ihren UUIDs zurück. Falls jemand anderes seine VM ebenfalls MeinServer genannt hat, wird auch diese UUID mit dem Befehl aufgelistet.

Verwaltung mehrerer Ressourcen mit demselben Namen

Wenn mehrere Ressourcen denselben Namen haben, wird die UUID unverzichtbar, um sie voneinander zu unterscheiden. Sie können die UUIDs aller Ressourcen mit einem bestimmten Namen abrufen und dann die richtige Ressource verwalten.

Hier funktioniert wieder der gerade verwendete Befehl
openstack server list --name MeinServer.

Die Ausgabe zeigt alle Server mit dem Namen MeinServer zusammen mit ihren UUIDs. Dann müssen Sie, vielleicht anhand von anderen Merkmalen (verwendetes Image, verwendeter Flavor), noch die UUID identifizieren, die für Ihren MeinServer gilt.

Skripterstellung & Automatisierung

Bei der Erstellung von Skripten oder der Automatisierung von Aufgaben in OpenStack ist es generell besser, UUIDs anstelle von Namen zu verwenden. Dadurch werden Probleme mit Namenskonflikten vermieden und sichergestellt, dass Ihr Skript immer die richtige Ressource anspricht.

Beispielskript

#! /bin/bash
# Herausfinden der UUID des eigenen Servers und Zuweisen zu einer Variable
# Schalter -f value sorgt dafür, dass der übliche Tabellenschmuck der Ausgabe entfällt
# Schalter -c ID beschränkt die Ausgabe auf den Wert in der Spalte/column ID
SERVER_ID=$(openstack server list --name MeinServer -f value -c ID)
openstack server reboot $SERVER_ID

Anmerkung: Im wirklichen Leben sollte dieses Skript zumindest einmal direkt nach der Erstellung der OpenStack-Ressource laufen, um die (automatisch vergebene) UUID festzustellen. Diese kann dann separat in der eigenen Dokumentation für zukünftige Referenz festgehalten werden.

Ändern von Namen ohne Auswirkungen auf UUIDs

Sie können den Namen einer Ressource jederzeit ändern, ohne dass dies die UUID beeinflusst. Dadurch können Sie den Namen für mehr Klarheit oder Organisationszwecke aktualisieren, während die UUID weiterhin als konstanter Bezugspunkt dient.

So können Sie den Proof of Concept mit einem vorläufigen Namen zur Übernahme in die Produktion mit einem sprechenden Namen versehen:
openstack server set --name Fileserver_Abteilung_Z d7f5e5f8-cfda-4bfa-b5e1-8d4a7c5e6f58.

Zusammenfassung

Die gleichzeitige Verwendung von einfachen Namen und UUIDs in OpenStack bietet Ihnen das Beste aus beiden Welten: die Benutzerfreundlichkeit und Lesbarkeit von Namen, kombiniert mit der Zuverlässigkeit und Eindeutigkeit von UUIDs. Namen erleichtern die tägliche Identifizierung und Verwaltung von Ressourcen, während UUIDs eine konsistente und eindeutige Referenz bieten, die besonders in der Automatisierung und in komplexen Umgebungen nützlich ist. Dieser duale Ansatz ermöglicht Flexibilität, Effizienz und Genauigkeit bei der Verwaltung von OpenStack-Ressourcen.

Carl Camurça
Carl Camurça has been with B1 Systems as Linux trainer and consultant since 2017. Originally a molecular geneticist, he turned to Linux a long time ago. His passion is teaching in topics like automation, networking, configuration management and container technologies but also introducing newbies to the wonderful world of Open Source software. Proficient in Martial Arts, he adopted its principle to make one step closer to perfection everyday (but never reaching it).

This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.