Afficher et gérer les métadonnées de VM

Chaque machine virtuelle (VM) stocke ses métadonnées sur un serveur de métadonnées. Vous pouvez ajouter, supprimer et afficher des métadonnées sur vos VM Google Distributed Cloud (GDC) isolées en tant que paires clé/valeur (KVP).

Vous pouvez utiliser les KVP de métadonnées pour stocker des informations qui peuvent vous aider à identifier votre VM, comme un nom de serveur. Vous pouvez accéder aux métadonnées depuis l'extérieur et l'intérieur de la VM, et les utiliser pour transmettre des informations entre différents systèmes.

Avant de commencer

Pour utiliser les commandes de l'interface de ligne de commande (CLI) gdcloud, assurez-vous d'avoir téléchargé, installé et configuré la CLI gdcloud. Toutes les commandes pour Distributed Cloud utilisent la CLI gdcloud ou kubectl et nécessitent un environnement de système d'exploitation (OS).

Obtenir le chemin d'accès au fichier kubeconfig

Pour exécuter des commandes sur le serveur de l'API Management, assurez-vous de disposer des ressources suivantes :

  1. Connectez-vous et générez le fichier kubeconfig pour le serveur d'API Management si vous n'en avez pas.

  2. Utilisez le chemin d'accès au fichier kubeconfig du serveur de l'API Management pour remplacer MANAGEMENT_API_SERVER dans ces instructions.

Demander des autorisations et un accès

Pour ajouter, supprimer et gérer les métadonnées des instances de VM avec l'API et la CLI gdcloud, demandez à l'administrateur IAM de votre projet de vous accorder les rôles IAM suivants dans l'espace de noms du projet dans lequel réside la VM :

  • Administrateur VirtualMachine du projet (project-vm-admin) : gère les VM dans l'espace de noms du projet.

  • Lecteur de projet (project-viewer) : dispose d'un accès en lecture seule à toutes les ressources d'un espace de noms de projet.

Suivez la procédure pour valider votre accès.

Ajouter ou supprimer des métadonnées

Cette section explique comment ajouter et supprimer des métadonnées d'instances de VM existantes.

Vous pouvez utiliser des métadonnées pour stocker des paires clé/valeur arbitraires que vous souhaitez ajouter à vos VM. Par exemple, vous pouvez ajouter et gérer vos propres métadonnées personnalisées pour identifier différents environnements, tels que test et production.

Ajouter des métadonnées

gdcloud

  • Ajoutez des métadonnées à une instance de VM spécifique. Vous devez inclure l'une des options --metadata ou --metadata-from-file dans votre commande. Si nécessaire pour votre cas d'utilisation, vous pouvez également ajouter les deux indicateurs dans la même commande :

    gdcloud compute instances add-metadata VM_NAME
        [--project=PROJECT_NAME]
        [--metadata=KEY=KEY_VALUE,[,KEY=KEY_VALUE,...]]
        [--metadata-from-file=KEY=LOCAL_FILE_PATH,]
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de l'instance de VM
    • PROJECT_NAME : nom du projet dans lequel réside la VM. Cette valeur est facultative.
    • KEY : clé de la paire de métadonnées.
    • KEY_VALUE : valeur de la paire de métadonnées.
    • LOCAL_FILE_PATH : valeur de la paire de métadonnées à partir d'un fichier local.

API

Pour ajouter des métadonnées avec l'API, vous devez utiliser un jeton STS.

  1. Utilisez la CLI gdcloud pour générer un jeton STS :

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    Remplacez ORG_SUFFIX par le suffixe de l'organisation. Par exemple, si l'URL de la console d'administration de l'organisation est https://console.example-org.com, ORG_SUFFIX est example-org.com.

    Le résultat ressemble à ce qui suit :

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. Ajoutez des métadonnées à une instance de VM spécifique :

    curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT_NAME/vm/VM_NAME" \
      -H "Authorization: Bearer STS_TOKEN \
      -H "Content-Type: application/json" \
      -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
    

    Remplacez les éléments suivants :

    • ORG_SUFFIX : suffixe de l'organisation. Par exemple, si l'URL de la console de l'organisation est https://console.example-org.com, le ORG_SUFFIX est example-org.com.
    • VM_NAME : nom de l'instance de VM
    • PROJECT_NAME : nom du projet dans lequel réside la VM. Cette valeur est facultative.
    • STS_TOKEN : jeton STS généré à partir de la gcloud CLI.

    L'exemple suivant montre une commande curl complète permettant d'ajouter des métadonnées à une instance de VM :

    curl -X POST "https://metadata.org-1.zone1.google.gdch.test/virtual-machines/metadata/v1/projects/username-test/vm/lancer-vm" \
      -H "Authorization: Bearer $STS_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"metadata": {"items": [{"key": "test-key1", "value": "test-value"}]}}'
    

Supprimer les métadonnées

gdcloud

  • Supprimez les métadonnées d'une instance de VM spécifique. Si vous souhaitez supprimer toutes les entrées de métadonnées, utilisez l'indicateur --all. Vous devez utiliser l'une des options --all ou --keys dans votre commande :

    gdcloud compute instances remove-metadata VM_NAME
        [--project=PROJECT_NAME]
        [--keys=KEY,[KEY,...]]
        [--all]
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de l'instance de VM
    • PROJECT_NAME : nom du projet dans lequel réside la VM. Cette valeur est facultative.
    • KEY : chaîne clé pour la paire de métadonnées.

API

Pour supprimer des métadonnées avec l'API, vous devez utiliser un jeton STS.

  1. Utilisez la CLI gdcloud pour générer un jeton STS :

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    Remplacez ORG_SUFFIX par le suffixe de l'organisation. Par exemple, si l'URL de la console d'administration de l'organisation est https://console.example-org.com, le ORG_SUFFIX est example-org.com.

    Le résultat ressemble à ce qui suit :

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. Supprimez les métadonnées d'une instance de VM spécifique :

    curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT_NAME/vm/VM_NAME" \
      -H "Authorization: Bearer STS_TOKEN" \
      -H "Content-Type: application/json" \
      -d "{"metadata": {}}"
    

    Remplacez les éléments suivants :

    • ORG_SUFFIX : suffixe de l'organisation. Par exemple, si l'URL de la console de l'organisation est https://console.example-org.com, le ORG_SUFFIX est example-org.com.
    • VM_NAME : nom de l'instance de VM
    • PROJECT_NAME : nom du projet dans lequel réside la VM.
    • STS_TOKEN : jeton STS généré à partir de la gcloud CLI.

Métadonnées de requête

gdcloud

  • Listez toutes les métadonnées d'instance de VM pour afficher les détails des métadonnées :

    gdcloud compute instances describe VM_NAME
        [--project=PROJECT_NAME]
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de l'instance de VM
    • PROJECT_NAME : nom du projet dans lequel réside la VM. Cette valeur est facultative.

    Le résultat ressemble à ce qui suit :

    # …
    metadata:
      items:
      - key: Key-1
        value: val12
      - key: key2
        value:
          lksdjfhk-user1
    

API

  1. Utilisez la CLI gdcloud pour générer un jeton STS :

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    Remplacez ORG_SUFFIX par le suffixe de l'organisation.

    Le résultat ressemble à ce qui suit :

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. Listez toutes les métadonnées d'instance de VM pour afficher les détails des métadonnées :

    curl "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT_NAME/vm/VM_NAME" \
      -H "Authorization: Bearer STS_TOKEN" \
      -H "Content-Type: application/json"
    

    Remplacez les éléments suivants :

    • ORG_SUFFIX : suffixe de l'organisation. Par exemple, si l'URL de la console de l'organisation est https://console.example-org.com, le ORG_SUFFIX est example-org.com.
    • VM_NAME : nom de l'instance de VM
    • PROJECT_NAME : nom du projet dans lequel réside la VM. Cette valeur est facultative.
    • STS_TOKEN : jeton STS généré à partir de la gcloud CLI.

    Le résultat ressemble à ce qui suit :

    # …
    metadata:
      items:
      - key: Key-1
        value: val12
      - key: key2
        value:
          lksdjfhk-user1
    

Interroger les métadonnées à partir d'une VM

Vous pouvez interroger les métadonnées de VM à partir de la VM, sans avoir à vous connecter au serveur de métadonnées. Pour ce faire, utilisez la commande curl et ajoutez la clé de métadonnées applicable à l'URL des métadonnées.

Interroger un seul KVP

Interroger une seule paire clé/valeur à partir d'une VM :

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" \
  -H "Metadata-Flavor: Google"

Remplacez KEY par la clé de la paire de métadonnées que vous souhaitez interroger.

Interroger toutes les paires clé-valeur avec des valeurs

Interrogez toutes les paires clé/valeur d'une VM avec des valeurs clés :

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" \
  -H "Metadata-Flavor: Google"

Interroger toutes les clés de métadonnées sans valeur

Interrogez toutes les clés de métadonnées à partir d'une VM sans clé-valeur :

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" \
  -H "Metadata-Flavor: Google"