VM-Metadaten


Die Metadaten jeder VM-Instanz werden auf einem Metadatenserver gespeichert. Ihre VM hat automatisch ohne zusätzliche Autorisierung Zugriff auf die Metadatenserver-API. Metadaten werden als Schlüssel/Wert-Paare gespeichert.

In diesem Dokument erhalten Sie einen Überblick über VM-Metadaten und es werden die Typen und Attribute von VM-Metadaten erklärt.

Verwendungszwecke von VM-Metadaten

In den folgenden Abschnitten werden einige Szenarien beschrieben, in denen Sie Metadateneinträge zum Verwalten Ihrer VMs verwenden können.

Start- und Shutdown-Skripts

Der Metadatenserver ist besonders in Kombination mit Startskripts und Shutdown-Skripts von Vorteil, da Sie mit ihm programmatisch und ohne zusätzliche Autorisierung eindeutige Informationen über eine Instanz erhalten.

So können Sie zum Beispiel ein Startscript schreiben, das das Metadaten-Schlüssel/Wert-Paar für die externe IP-Adresse einer VM abruft, und diese IP-Adresse in Ihrem Script verwenden, um eine Datenbank einzurichten. Da die vordefinierten Metadatenschlüssel von Compute Engine auf jeder VM identisch sind, können Sie Ihr Script wiederverwenden, ohne es für jede VM aktualisieren zu müssen. So müssen Sie weniger problemanfälligen Code für Ihre Anwendungen erstellen.

Hostwartung

Der Metadatenserver stellt Informationen zu einer Planungsoption für eine VM über den Metadaten-Verzeichniseintrag scheduling/ und das Attribut maintenance-event bereit. Sie können diese Metadatenwerte verwenden, um sich benachrichtigen zu lassen, wenn ein Wartungsereignis bevorsteht. So können Sie Ihre Umgebung für das Ereignis vorbereiten. Weitere Informationen finden Sie unter Live-Migrationshinweise erhalten.

Gastattribute

Gastattribute sind ein spezieller Typ benutzerdefinierter Metadaten, in die Anwendungen Daten schreiben können, während sie auf der VM ausgeführt werden. Verwenden Sie Gastattribute nur für Anwendungsfälle, in denen kleine Datenmengen erforderlich sind, die sich nicht häufig ändern. Weitere Informationen zu Gastattributen finden Sie unter Gastattribute festlegen und abfragen.

Überlegungen zur Metadatensicherheit

Wenn Sie eine Anfrage zum Abrufen von Informationen vom Metadatenserver senden, verlassen Ihre Anfragen und die nachfolgende Metadatenantwort niemals den physischen Host, auf dem die VM ausgeführt wird.

Jeder Prozess, der die Metadaten-URL abfragen kann, hat Zugriff auf alle Werte auf dem Metadatenserver. Dazu gehören auch alle benutzerdefinierten Metadatenwerte, die Sie auf den Server schreiben. Google empfiehlt, beim Schreiben vertraulicher Werte auf den Metadatenserver und bei der Ausführung von Drittanbieterprozessen vorsichtig vorzugehen.

Vordefinierte und benutzerdefinierte Metadatenschlüssel

Jeder Metadateneintrag wird auf dem Metadatenserver als Schlüssel/Wert-Paare gespeichert. Bei Metadatenschlüsseln wird zwischen Groß- und Kleinschreibung unterschieden. Ihre Schlüssel können entweder vordefinierte oder benutzerdefinierte Metadatenschlüssel sein.

Vordefinierte Metadatenschlüssel

Vordefinierte Metadatenschlüssel sind Metadatenschlüssel, die von Compute Engine erstellt werden. Wenn Sie eine VM erstellen, legt Compute Engine automatisch die Metadatenwerte für einige dieser Schlüssel auf dieser VM fest, z. B. die VM-Instanz-ID oder die Projekt-ID. Für vordefinierte Schlüssel, bei denen Compute Engine nicht automatisch einen Wert festlegt, können Sie aus einer Reihe von Werten auswählen, die je nach Systemkonfiguration verfügbar sind. Wenn Sie beispielsweise OS Login für eine VM aktivieren möchten, können Sie den Wert des vordefinierten Schlüssels enable-oslogin für diese VM auf TRUE setzen. Wenn Sie OS Login für diese VM deaktivieren möchten, können Sie den Wert des Schlüssels auf FALSE aktualisieren. Sie können nur die Werte für diese Schlüssel aktualisieren, nicht jedoch die Schlüssel selbst.

Weitere Informationen zu vordefinierten Metadatenschlüsseln und eine Liste dieser Schlüssel finden Sie unter Vordefinierte Metadatenschlüssel.

Benutzerdefinierte Metadatenschlüssel

Mit benutzerdefinierten Metadaten können Sie eigene Metadaten-Schlüssel/Wert-Paare auf einer einzelnen VM oder in einem Projekt erstellen und verwenden. Sie können neue benutzerdefinierte Metadatenschlüssel hinzufügen, die Werte vorhandener Schlüssel aktualisieren und benutzerdefinierte Metadateneinträge entfernen, wenn Sie diese nicht mehr benötigen. Das Festlegen benutzerdefinierter Metadaten ist nützlich, um beliebige Werte an VMs in einem Projekt zu übergeben. Es ist auch nützlich zum Erstellen von Startscripts und Shutdown-Scripts.

Informationen zum Hinzufügen, Aktualisieren oder Entfernen benutzerdefinierter Metadaten für Ihre VMs finden Sie unter Benutzerdefinierte Metadaten konfigurieren.

Arten von Metadaten

VM-Metadateneinträge können spezifische Informationen für eine einzelne VM oder ein Projekt enthalten. Die Metadaten werden anhand der Art der bereitgestellten Informationen in Projekt- und Instanzmetadaten unterteilt.

Projektmetadaten

Projektmetadaten liefern Informationen über das Projekt. Projektmetadaten sind in folgende Typen unterteilt, je nachdem, welchen Bereich Sie für Ihre Projektmetadaten definieren:

  • Projektweite Metadaten sind Projektmetadaten, die Sie mit einem Projektbereich definieren. Wenn Sie diese Metadaten auf Projektebene festlegen, werden die Metadaten an alle VMs in diesem Projekt weitergegeben.

    Sie können sowohl vordefinierte als auch benutzerdefinierte Metadatenschlüssel verwenden, um projektweite Metadaten festzulegen. Weitere Informationen finden Sie unter Vordefinierte Projektmetadatenschlüssel und Benutzerdefinierte projektweite Metadaten festlegen.

  • Projektzonale Metadaten (Vorschau) sind Projektmetadaten, die Sie mit einem zonalen Bereich innerhalb des Projekts definieren. Die von Ihnen festgelegten Metadaten werden nur an die VMs in der konfigurierten Zone in diesem Projekt weitergegeben. Projektzonale Metadaten helfen Ihnen bei der Fehlerisolation und bieten eine höhere Zuverlässigkeit. Außerdem können Sie projektzonale Metadaten verwenden, um die projektweiten Werte für vorhandene Schlüssel zu überschreiben und zonenspezifische Werte zu verwenden.

    Compute Engine stellt keine vordefinierten Schlüssel für projektzonale Metadaten bereit. Sie müssen eigene benutzerdefinierte projektzonale Metadatenschlüssel erstellen. Weitere Informationen finden Sie unter Benutzerdefinierte projektzonale Metadaten festlegen.

Instanzmetadaten

Instanzmetadaten stellen Informationen zu einer bestimmten VM-Instanz bereit. Instanzmetadaten werden für jede einzelne VM-Instanz separat festgelegt.

Sie können sowohl vordefinierte als auch benutzerdefinierte Metadatenschlüssel verwenden, um Instanzmetadaten festzulegen. Weitere Informationen zu vordefinierten Instanzmetadatenschlüsseln und zum Festlegen von benutzerdefinierten Instanzmetadaten

Anordnung von Metadaten

Compute Engine speichert und verwaltet die Metadatenschlüssel und -werte für Ihre VMs und Projekte in Verzeichniseinträgen. Je nach der Art der Metadaten speichert Compute Engine Metadateneinträge in einem der folgenden Verzeichnisse:

Art der Metadaten Verzeichnis
  • Projektweite Metadaten
  • Projektzonale Metadaten

http://metadata.google.internal/computeMetadata/v1/project/
Instanzmetadaten

http://metadata.google.internal/computeMetadata/v1/instance/

In jedem Verzeichnis werden Metadateneinträge in Form von Schlüssel/Wert-Paaren gespeichert. Bei einigen Metadaten-Einträgen handelt es sich um Verzeichnisse, die andere Metadatenschlüssel enthalten. Die Metadateneinträge, die als Verzeichnisse fungieren, sind durch einen abschließenden Schrägstrich (/) im Namen des Metadatenschlüssels gekennzeichnet. Beispiel: /project/attributes/ ist ein Verzeichnis im Verzeichnis project/, das andere Metadatenschlüssel enthält. Wenn Sie einen eigenen Metadaten-Verzeichniseintrag erstellen möchten, müssen Sie beim Erstellen des benutzerdefinierten Metadateneintrags einen abschließenden Schrägstrich (/) im Namen des Metadatenschlüssels verwenden.

Projekt- und projektzonale Metadateneinträge werden im selben Verzeichnis project/ gespeichert. Wenn Sie verschiedene Werte für dieselben benutzerdefinierten Metadatenschlüssel für VMs auf Projektebene und auf projektzonaler Ebene festlegen, haben die projektzonalen Metadatenwerte für diese Schlüssel Vorrang vor den projektweiten Metadatenwerten in den entsprechenden Zonen.

  • Wenn Sie einen projektzonalen Wert für einen Metadatenschlüssel hinzufügen, der bereits einen projektweiten Wert hat, überschreibt Compute Engine den projektweiten Wert für die VMs in der angegebenen Zone und aktualisiert das Verzeichnis /project mit dem projektzonalen Wert.
  • Wenn Sie einen neuen projektweiten Metadatenwert für einen Metadatenschlüssel hinzufügen, der bereits einen projektzonalen Wert hat, ändert sich nichts. Compute Engine behält den projektzonalen Wert im Verzeichnis /project der jeweiligen Zone bei.
  • Wenn Sie keinen projektzonalen Wert für einen benutzerdefinierten Metadatenschlüssel in einer bestimmten Zone angeben, der Schlüssel jedoch einen projektweiten Wert hat, haben Ihre VMs in diesen Zonen weiterhin die projektweiten Werte.

Angenommen, Sie definieren das projektweite Metadatenpaar key-1=value-1. Angenommen, Sie definieren auch ein projektzonales Metadatenpaar key-1=zonal-value-1 nur für die Zone us-central1-a. Alle VMs in der Zone us-central1-a für Ihr Projekt übernehmen key-1=zonal-value1 als Metadatenpaar. Das Metadatenpaar bleibt key-1=value-1 für alle VMs in anderen Zonen, in denen Sie keine projektzonalen Metadaten für key-1 festgelegt haben.

Nächste Schritte