Zugriff und Verwendung von DigitalOcean-Droplet-Metadaten

0
147

DigitalOcean-Droplets besitzen Metadaten, die Informationen über die Recheninstanz und ihre Umgebung preisgeben. Sie können Ihre eigenen willkürlichen Daten bereitstellen, um benutzerdefinierte Werte aus Ihrem Droplet heraus zugänglich zu machen.

Standard-Metadaten

Die Standard-Metadaten, die in jedem Droplet verfügbar sind, ermöglichen Abfragen Schlüsselinformationen wie die DigitalOcean-Rechenzentrumsregion, Netzwerkschnittstellenadressen und im Control Panel oder über die API zugewiesene Tags.

Ein Droplet kann seine eigenen Metadaten abrufen, indem es die spezielle Netzwerkadresse 169.254.169.254 aufruft. Stellen Sie über SSH eine Verbindung zu Ihrem Droplet her und verwenden Sie den curl-Befehl, um mit den verfügbaren API-Endpunkten zu experimentieren.

Hier ein einfaches Beispiel mit einer Liste der unterstützten Metadatenfelder:

curl http://169.254.169.254/metadata/v1/

Sie können auf alle Felder zugreifen, die in der Ausgabe dieses Endpunkts enthalten sind, indem Sie den Feldnamen an die Basis-URL der Metadaten-API anhängen:

curl http://169.254.169.254/metadata/v1/id Advertisement

In diesem Beispiel wird die IP-Adresse des Droplets in seiner Antwort bereitgestellt.

Metadatenfelder

Die folgenden Metadatenfelder werden derzeit unterstützt:

  • id – Die öffentliche IP-Adresse des Droplets.
  • Hostname – Der Hostname des Droplets, der dem beim Erstellen des Droplets angegebenen Namen entspricht. Möglicherweise wird der Name in /etc/hostname nicht wiedergegeben, wenn Sie ihn später manuell ändern.
  • Benutzerdaten – Beliebige vom Benutzer bereitgestellte Daten (siehe den späteren Abschnitt in diesem Handbuch).
  • Lieferantendaten – Von DigitalOcean ausgegebene Daten, die zum Konfigurieren des Droplets verwendet werden.
  • öffentliche Schlüssel – Öffentliche SSH-Schlüssel, die dem Droplet hinzugefügt wurden, als es über das Control Panel oder die API erstellt wurde. Diese Schlüssel werden dem Root-Konto automatisch hinzugefügt.
  • Region – Das DigitalOcean-Rechenzentrum, in dem sich das Tröpfchen befindet, z. B. nyc1 oder lon1.
  • Schnittstellen – Stellt Details zu den Netzwerkschnittstellen des Droplets bereit. Die Antwort enthält private und öffentliche Felder, jeweils ein Array von Objekten, die konfigurierte Netzwerkschnittstellen beschreiben. Zu den Details gehören ipv4, um die IP-Adresse zu erhalten, und mac, die gemeldete MAC-Adresse des Droplets in diesem Netzwerk.
  • floating_ip – Wenn dem Droplet eine Floating-IP von DigitalOcean zugewiesen wird, zeigt dieses Feld seine Details an.
  • dns – Enthält ein Unterfeld nameservers, das die Nameserver auflistet, die vom Droplet bei der Durchführung von DNS-Lookups verwendet werden.
  • tags – Stellt eine Liste aller vom Benutzer erstellten Tags bereit, die dem Droplet zugewiesen sind.
  • Funktionen – Ein Objekt, das DigitalOcean-Funktionen beschreibt, die für das Droplet aktiviert wurden.

Felder, die verschachtelte Daten enthalten oder Arrays von Objekten sind, können mit API-Endpunkten durchlaufen werden. Hier ein Beispiel, das die IP-Adresse der ersten privaten Netzwerkschnittstelle des Droplets bereitstellt:

curl http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address

Dies macht es einfach, bestimmte Werte zur Verwendung in Ihren Skripten zu extrahieren. Sie müssen die JSON-Antworttexte nicht immer manuell analysieren.

Sobald Sie die ID Ihres Droplets erhalten haben, können Ihre Skripts an die reguläre DigitalOcean-API weitergeleitet werden, um weitere Informationen zu erhalten oder Droplet-Aktionen durchzuführen. Als Beispiel möchten Sie vielleicht einen Snapshot erstellen, bevor Sie eine destruktive Befehlsfolge ausführen. Ihr Skript könnte die Metadaten-API verwenden, um die Droplet-ID zu ermitteln, auf der es ausgeführt wird, und dann die ID an die Snapshot-REST-API übergeben, um einen neuen Snapshot zu erstellen. Das Skript wäre weiterhin auf verschiedene Droplets übertragbar, da Sie die ID nicht fest kodieren.

Alle verfügbaren Metadaten abrufen

Sie können alle mit einem Droplet verknüpften Metadaten abrufen, indem Sie .json an den Basis-API-Endpunkt anhängen:

curl http://169.254.169.254/metadata/v1.json

Dadurch wird ein JSON-Objekt bereitgestellt, das alle Felder enthält oben beschrieben. Felder mit einem – (Bindestrich) werden konvertiert, um stattdessen _ (Unterstrich) im JSON zu verwenden.

Benutzerdaten

Mit DigitalOcean können Sie Benutzerdaten bereitstellen, wenn Sie ein neues Droplet erstellen. Es kann entweder über das Formular in der Systemsteuerung oder mit dem Flag –user-data bereitgestellt werden, wenn Sie doctl compute droplet create verwenden. Nutzerdaten werden durch das Nutzerdatenfeld in der Metadaten-API bereitgestellt.

Werbung

Wie andere Formen von Metadaten sind Benutzerdaten unveränderlich und können nach der Erstellung des Droplets nicht mehr geändert werden. Es wird normalerweise verwendet, um Erstausführungspaketinstallationen und Konfigurationsänderungen zu konfigurieren, aber Sie können auch beliebige Datenfelder hinzufügen, die für Ihre Organisation sinnvoll sind.

Benutzerdaten werden an cloud-init übergeben. Dieses Programm wird beim ersten Booten eines Droplets ausgeführt und fungiert als Mechanismus zur Automatisierung der Ersteinrichtung. Um cloud-init zu verwenden, fügen Sie den Benutzerdaten Ihres Droplets den Inhalt einer mit der Cloud-Konfiguration kompatiblen YAML-Datei hinzu. Dieses Beispiel aktualisiert alle vorhandenen Pakete, schreibt eine Datei und erstellt ein neues Benutzerkonto:

Benutzer: Name: Beispielgruppen: Sudo Shell: /bin/bash write_files: – Pfad: /example.txt Inhalt: “Beliebige Daten hier” package_update: true

Other Zugriffsmöglichkeiten auf Metadaten

Die Metadaten-API ist ein Dienst, der nur innerhalb eines Droplets verfügbar ist. Sie interagieren damit über curl, alternative Terminal-HTTP-Clients oder die HTTP-Bibliothek Ihrer Programmiersprache in Skripten. DigitalOcean bietet eine offizielle Client-Bibliothek für Go, die als grundlegender Wrapper um die API fungiert.

Sie können die Metadaten eines Droplets nicht direkt von außen abfragen. Weder die Doctl-CLI noch die Haupt-REST-API von DigitalOcean unterstützen das Abrufen der genauen Datenstruktur, die vom In-Droplet-Metadatendienst bereitgestellt wird.

Wenn Sie extern auf Droplet-Details wie Netzwerkschnittstellen, Tags und Systemkonfiguration zugreifen möchten, müssen Sie andere Funktionen der API und von Doctl. Der Befehl doctl compute droplet get ist ein guter Ausgangspunkt, der viele der gleichen Informationen wie der Metadata-Dienst sowie einige zusätzliche Details einschließlich Hardwareressourcenbeschränkungen bereitstellt.

Zusammenfassung

Der DigitalOcean-Metadatendienst ist eine spezielle API, auf die Sie von Ihren Droplets aus zugreifen können. Es hilft Ihnen, Skripte zu erstellen, die auf Schlüsselattribute Ihres Droplets verweisen müssen, wie z. s Metadaten während des Erstellungsprozesses. Die Metadaten-API macht es als Benutzerdatenfeld verfügbar. Das bedeutet, dass Sie Metadaten als grundlegenden Konfigurationsspeicher für Ihre Skripts und Bootstrap-Routinen verwenden können, sodass Sie nicht jedes Mal Dateien kopieren oder Umgebungsvariablen festlegen müssen, wenn Sie ein neues Droplet erstellen.

Metadaten sind immer spezifisch für eine Person Tröpfchen. Die API existiert, um einen Mechanismus zur Introspektion von Tröpfchen bereitzustellen. Verwenden Sie die reguläre REST-API, entweder direkt oder über Doctl, wenn Sie Ihr DigitalOcean-Konto abfragen möchten, um andere Droplets mit ähnlichen Attributen zu finden.