Récupération des métadonnées d'une instance

Le plus souvent, vous souhaitez collecter les métadonnées d'une instance en cours d'exécution et les utiliser pour démarrer une autre instance de serveur virtuel. Dans d'autres cas, vous pouvez avoir besoin de collecter des informations sur les pièces jointes de réseau ou les pièces jointes de volume. Examinez la procédure générale et les instructions étape par étape pour activer l'accès au service de métadonnées, créer un jeton d'accès à l'identité et récupérer les métadonnées.

Procédure générale d'accès aux métadonnées de l'instance

Le tableau 1 décrit les étapes de l'accès aux métadonnées. Ces informations fournissent le contexte de chaque étape et des liens vers des informations spécifiques pour effectuer cette étape. Dans un environnement réel, les étapes 3 à 5 seraient plus probablement lancées par le logiciel d'initialisation de votre instance au démarrage ou à l'aide de cloud-init.

Procédure générale d'accès aux métadonnées
Etape Contexte Service appelé Action de l'utilisateur
1 IBM Cloud IU VPC, CLI, API L'accès au service de métadonnées est désactivé par défaut. Vous pouvez activer l'accès au service de métadonnées sur une instance existante dans la console, à partir du CLI ou avec l'API.
2 IBM Cloud
Connectez-vous à l'instance en suivant la procédure de démarrage habituelle.
3 Instance VPC Service de métadonnées Exécutez une commande curl pour appeler le service de jetons de métadonnées afin d’ obtenir un jeton d’accès d’identité.
4 Instance VPC Service de métadonnées Exécutez une commande curl pour appeler le service de métadonnées afin de récupérer les informations relatives à l'instance. Le jeton de l'étape précédente est transmis et les métadonnées sont renvoyées.
5 Instance VPC
Analysez le code JSON renvoyé à l'étape précédente pour acquérir les données de l'utilisateur.

Procédure de bout en bout pour accéder aux métadonnées d'instance

Localisation de l'instance en cours d'exécution et activation de l'accès au service de métadonnées dans la console

  1. Dans la console IBM Cloud, cliquez sur l'icône de menu Navigation > Infrastructure VPC > Compute > Virtual server instances.

  2. Localisez l'instance en cours d'exécution dans la liste. Cliquez sur le nom de l'instance pour afficher ses détails. Dans l'onglet Vue d'ensemble, faites défiler jusqu'aux détails de la configuration avancée et cliquez sur le bouton permettant d'autoriser l'accès au service de métadonnées.

  3. Si l'instance possède déjà une adresse IP flottante (indiquée dans l'onglet Mise en réseau), utilisez cette adresse pour établir une connexion sécurisée avec le serveur. S'il n'a pas d'adresse IP flottante, attribuez-lui en une. Pour plus d'informations, voir les étapes suivantes de la rubrique Création d'instances de serveurs virtuels.

Localisation de l'instance en cours d'exécution et activation de l'accès au service de métadonnées à partir de la CLI

  1. Connectez-vous à l'interface de ligne de commande (CLI) d' IBM Cloud.

  2. Localisez l'instance en cours d'exécution à l'aide de la commande ibmcloud is instances, qui répertorie les instances disponibles dans la région.

    $ ibmcloud is instances
    Listing instances in all resource groups and region us-south under account Test Account as user test.user@ibm.com...
    ID                                          Name                    Status    Reserved IP    Floating IP      Profile    Image                                VPC                         Zone         Confidential Compute Mode   Enable Secure Boot   Resource group   Reservation Name   Cluster Network ID   Cluster Network Name   Cluster Network Attachments
    0717_9c55d9d2-0685-4300-b475-49eb1b8c1faf   my-virtual-server-1     running   10.240.0.6     -                bx2-2x8    ibm-ubuntu-24-04-2-minimal-amd64-1   my-test-vpc                 us-south-1   disabled                    false                defaults         -                  -                    -                      -
    0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6   my-virtual-server-2     running   10.240.64.11   169.47.94.48     bx2-2x8    ibm-ubuntu-24-04-6-minimal-amd64-3   my-test-vpc                 us-south-2   disabled                    false                defaults         -                  -                    -                      -
    0727_d7ff31ef-75ed-42c6-b0fb-a5837a63d722   my-virtual-server-3     running   10.240.64.12   52.116.204.232   bx2-2x8    ibm-redhat-9-2-minimal-amd64-5       my-test-vpc                 us-south-2   disabled                    false                defaults         -                  -                    -                      -
    

    Le service de métadonnées est pris en charge sur toutes les images stockées et personnalisées, ainsi que sur les profils d'UC.

  3. Exécutez la commande ibmcloud is instance pour confirmer que l'accès au service de métadonnées est activé. L'exemple suivant montre la valeur false.

    $ ibmcloud is instance 0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6
    Getting instance 0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6 under account Test Account as user test.user@ibm.com...
    ID                                    0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6
    Name                                  my-virtual-server-2
    CRN                                   crn:v1:bluemix:public:is:us-south-2:a/a1234567::instance:0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6
    Status                                running
    Availability policy on host failure   restart
    Confidential Compute Mode             disabled
    Enable Secure Boot                    false
    Startable                             true
    Profile                               bx2-2x8
    Architecture                          amd64
    vCPU Manufacturer                     intel
    vCPUs                                 2
    Memory(GiB)                           8
    Bandwidth(Mbps)                       4000
    Volume bandwidth(Mbps)                1000
    Network bandwidth(Mbps)               3000
    Lifecycle Reasons                     Code   Message
                                          -      -
    Lifecycle State                       stable
    Metadata service                      Enabled   Protocol   Response hop limit
                                          false     http       1
    Image                                 ID                                          Name
                                          r006-aa2af291-45b3-4f18-801c-8b7985e928f7   ibm-ubuntu-24-04-6-minimal-amd64-3
    Numa Count                            1
    VPC                                   ID                                          Name
                                          r006-01030e3c-2663-4f7d-ac55-651929dafe37   my-test-vpc
    Zone                                  us-south-2
    Resource group                        ID                                 Name
                                          6edefe513d934fdd872e78ee6a8e73ef   defaults
    Created                               2025-03-06T19:24:02+00:00
    Network Attachments                   Interface   Name   ID                                          Subnet         Subnet ID                                   Floating IP    VNI                                         Reserved IP
                                          Primary     eth0   0727-a3ff4d3e-be95-4a52-8025-b55b3c3285ea   my-subnet-01   0727-f24237f5-bdf0-4b94-ab4c-167a44b8bcb5   169.47.94.48   0727-dda9244a-64b9-421b-87e9-70549a70b4c3   10.240.64.11
    Boot volume                           ID                                          Name                                Attachment ID                               Attachment name
                                          r006-9afd6e01-0466-4e7b-a38b-75bf39469a42   eat-client-poc-boot-1741289020000   0727-241f39a8-3573-4ebc-b512-33508eb970c9   undaunted-starved-slander-galleria
    Reservation Affinity Policy           automatic
    Reservation Affinity Pool             -
    Reservation                           -
    Health State                          ok
    
  4. Activez l'accès au service de métadonnées en exécutant la commande ibmcloud is instance-update avec l'option --metadata-service true.

    $ ibmcloud is instance-update  0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6 --metadata-service true
    Updating instance 0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6 under account Test Account as user test.user@ibm.com...
    ID                                    0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6
    Name                                  my-virtual-server-2
    CRN                                   crn:v1:bluemix:public:is:us-south-2:a/a1234567::instance:0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6
    Status                                running
    Availability policy on host failure   restart
    Confidential Compute Mode             disabled
    Enable Secure Boot                    false
    Startable                             true
    Profile                               bx2-2x8
    Architecture                          amd64
    vCPU Manufacturer                     intel
    vCPUs                                 2
    Memory(GiB)                           8
    Bandwidth(Mbps)                       4000
    Volume bandwidth(Mbps)                1000
    Network bandwidth(Mbps)               3000
    Lifecycle Reasons                     Code   Message
                                          -      -
    Lifecycle State                       stable
    Metadata service                      Enabled   Protocol   Response hop limit
                                          true      http       1
    Image                                 ID                                          Name
                                          r006-aa2af291-45b3-4f18-801c-8b7985e928f7   ibm-ubuntu-24-04-6-minimal-amd64-3
    Numa Count                            1
    VPC                                   ID                                          Name
                                          r006-01030e3c-2663-4f7d-ac55-651929dafe37   my-test-vpc
    Zone                                  us-south-2
    Resource group                        ID                                 Name
                                          6edefe513d934fdd872e78ee6a8e73ef   defaults
    Created                               2025-03-06T19:24:02+00:00
    Network Attachments                   Interface   Name   ID                                          Subnet              Subnet ID                                   Floating IP    VNI                                         Reserved IP
                                          Primary     eth0   0727-a3ff4d3e-be95-4a52-8025-b55b3c3285ea   my-subnet-01   0727-f24237f5-bdf0-4b94-ab4c-167a44b8bcb5   169.47.94.48   0727-dda9244a-64b9-421b-87e9-70549a70b4c3   10.240.64.11
    Boot volume                           ID                                          Name                                Attachment ID                               Attachment name
                                          r006-9afd6e01-0466-4e7b-a38b-75bf39469a42   eat-client-poc-boot-1741289020000   0727-241f39a8-3573-4ebc-b512-33508eb970c9   undaunted-starved-slander-galleria
    Reservation Affinity Policy           automatic
    Reservation Affinity Pool             -
    Reservation                           -
    Health State                          ok
    
  5. Si l'instance possède déjà une adresse IP flottante, utilisez cette adresse pour établir une connexion sécurisée avec le serveur. S'il n'a pas d'adresse IP flottante, attribuez-lui en une. Pour plus d'informations, voir les étapes suivantes de la rubrique Création d'instances de serveurs virtuels.

Localiser l'instance en cours d'exécution et permettre l'accès au service de métadonnées à l'aide de l'API

  1. Localiser l'instance en cours en listant les instances disponibles dans la région. Sélectionnez l'identifiant de l'instance dans la réponse.

    curl -X GET "$vpc_api_endpoint/v1/instances?version=2025-05-13&generation=2" -H "Authorization: Bearer $iam_token"
    
  2. Récupérer les informations de l'instance sélectionnée pour confirmer si l'accès au service de métadonnées est activé.

    curl -X GET "$vpc_api_endpoint/v1/instances/0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6?version=2025-05-13&generation=2" -H "Authorization: Bearer $iam_token"
    

    La réponse de l'API indique "enabled": false dans la section metadata_service.

    {
     "availability_policy": {
         "host_failure": "restart",
         "host_maintenance": null
     },
     "bandwidth": 4000,
     "boot_volume_attachment": {
         "device": {
             "id": "0727-241f39a8-3573-4ebc-b512-33508eb970c9-mzpzd"
         },
         "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6/volume_attachments/0727-241f39a8-3573-4ebc-b512-33508eb970c9",
         "id": "0727-241f39a8-3573-4ebc-b512-33508eb970c9",
         "name": "undaunted-starved-slander-galleria",
         "volume": {
             "crn": "crn:v1:bluemix:public:is:us-south-2:a/a1234567::volume:r006-9afd6e01-0466-4e7b-a38b-75bf39469a42",
             "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-9afd6e01-0466-4e7b-a38b-75bf39469a42",
             "id": "r006-9afd6e01-0466-4e7b-a38b-75bf39469a42",
             "name": "eat-client-poc-boot-1741289020000",
             "resource_type": "volume"
         }
     },
     "confidential_compute_mode": "disabled",
     "created_at": "2025-03-06T19:24:02.000Z",
     "crn": "crn:v1:bluemix:public:is:us-south-2:a/a1234567::instance:0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6",
     "disks": [],
     "enable_secure_boot": false,
     "health_reasons": [],
     "health_state": "ok",
     "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6",
     "id": "0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6",
     "image": {
         "crn": "crn:v1:bluemix:public:is:us-south:a/a1234567::image:r006-aa2af291-45b3-4f18-801c-8b7985e928f7",
         "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-aa2af291-45b3-4f18-801c-8b7985e928f7",
         "id": "r006-aa2af291-45b3-4f18-801c-8b7985e928f7",
         "name": "ibm-ubuntu-24-04-6-minimal-amd64-3",
         "resource_type": "image"
     },
     "lifecycle_reasons": [],
     "lifecycle_state": "stable",
     "memory": 8,
     "metadata_service": {
         "enabled": false,
         "protocol": "http",
         "response_hop_limit": 1
     }
     .
     .
     .
    }
    
  3. Permettre l'accès au service de métadonnées en effectuant une PATCH /instances pour l'instance.

    curl -X PATCH "$vpc_api_endpoint/v1/instances/0727_ed12480a-40a4-41a0-98e3-6dfac8b25ad6?version=2025-05-13&generation=2" \
    -H "Authorization: Bearer $iam_token" \
    -d '{
         "metadata_service": {
            "enabled": true,
            "protocol": "http",
            "response_hop_limit": 1
            }
        }`
    
  4. Si l'instance possède déjà une adresse IP flottante, utilisez cette adresse pour établir une connexion sécurisée avec le serveur. S'il n'a pas d'adresse IP flottante, attribuez-lui en une. Pour plus d'informations, voir Connexion à votre instance.

Établissement d'une connexion sécurisée à l'instance de serveur virtuel

Linux

L'exemple suivant montre la syntaxe de commande à utiliser pour se connecter à une instance de serveur basée sur Linux.

ssh -i <path to your private key file> <default-user-account>@<floating ip address>

Windows

Les utilisateurs de Windows doivent remplir des conditions supplémentaires pour accéder au service de métadonnées et l'utiliser. Pour plus d'informations, consultez la section Configuration des serveurs Windows pour l'utilisation du service de métadonnées.

Si votre serveur fonctionne sous Windows, utilisez un client RDP pour vous y connecter.

Pour plus d'informations, voir Connexion à votre instance Linux ou Connexion à votre instance Windows.

Collecte d'informations auprès du service de métadonnées

À partir de l'instance de serveur virtuel, faites une demande à l'API d'identité pour récupérer un jeton d'identité. Indiquez la durée de validité du jeton. Par exemple, vous pouvez spécifier 3600 secondes (1 heure).

export identity_token=`curl -X PUT "http://api.metadata.cloud.ibm.com/identity/v1/token?version=2022-03-01"\
  -H "Metadata-Flavor: ibm"\
  -H "Accept: application/json"\
  -d '{
        "expires_in": 3600
      }' | jq -r '(.access_token)'`

La réponse fournit le jeton d'accès à l'identité. L'analyseur syntaxique l'enregistre dans le fichier .access_token.

L'exemple utilise jq comme analyseur syntaxique, un outil tiers sous licence MIT. Certains systèmes d'exploitation ne l'incluent pas par jq défaut. Installez-le avant jq utilisation ou remplacez-le par un autre analyseur JSON.

Récupération des informations d'initialisation

Après avoir obtenu votre jeton d'identité, vous pouvez maintenant faire une demande API au service de métadonnées pour recueillir les informations d'initialisation :

curl -X GET "http://api.metadata.cloud.ibm.com/metadata/v1/instance/initialization?version=2024-11-12"\
   -H "Accept: application/json"\
   -H "Authorization: Bearer $identity_token"\
   | jq -r

La réponse de l'API contient des informations telles que la clé SSH et les données de l'utilisateur qui ont été spécifiées lors de l'approvisionnement du serveur virtuel. Si vous avez configuré des mots de passe, ces informations sont également renvoyées. Vous pouvez utiliser ces informations pour démarrer une nouvelle instance de serveur virtuel.

Récupération des informations sur l'instance

Envoyez une requête GET "/metadata/v1/instance" pour récupérer des informations détaillées sur l'instance.

curl -X GET "$vpc_metadata_api_endpoint/metadata/v1/instance?version=2025-04-22" -H "Authorization: Bearer $identity_token"

La réponse énumère tous les détails d'une instance, y compris les interfaces réseau, le profil de traitement et les connexions de volume.

{
  "boot_volume_attachment": {
    "id": "a8a15363-a6f7-4f01-af60-715e85b28141",
    "name": "my-boot-volume-attachment",
    "volume": {
      "crn": "crn:[...]",
      "id": "49c5d61b-41e7-4c01-9b7a-1a97366c6916",
      "name": "my-boot-volume"
    }
  },
  "created_at": "2021-10-19T16:11:57Z",
  "crn": "crn:[...]",
  "disks": [],
  "id": "eb1b7391-2ca2-4ab5-84a8-b92157a633b0",
  "image": {
    "crn": "crn:[...]",
    "id": "9aaf3bcb-dcd7-4de7-bb60-24e39ff9d366",
    "name": "my-image"
  },
  "memory": 8,
  "name": "my-instance",
  "network_interfaces": [
    {
      "id": "7ca88dfb-8962-469d-b1de-1dd56f4c3275",
      "name": "my-network-interface",
      "primary_ipv4_address": "10.0.0.32",
      "resource_type": "network_interface",
      "subnet": {
        "crn": "crn:[...]",
        "id": "bea6a632-5e13-42a4-b4b8-31dc877abfe4",
        "name": "my-subnet",
        "resource_type": "subnet"
      }
    }
  ],
  "primary_network_interface": {
    "id": "7ca88dfb-8962-469d-b1de-1dd56f4c3275",
    "name": "my-network-interface",
    "primary_ipv4_address": "10.0.0.32",
    "resource_type": "network_interface",
    "subnet": {
      "crn": "crn:[...]",
      "id": "bea6a632-5e13-42a4-b4b8-31dc877abfe4",
      "name": "my-subnet",
      "resource_type": "subnet"
    }
  },
  "profile": {
    "name": "bx2-2x8"
  },
  "resource_type": "instance",
  "vcpu": {
    "architecture": "amd64",
    "count": 2
  },
  "volume_attachments": [
    {
      "id": "a8a15363-a6f7-4f01-af60-715e85b28141",
      "name": "my-boot-volume-attachment",
      "volume": {
        "crn": "crn:[...]",
        "id": "49c5d61b-41e7-4c01-9b7a-1a97366c6916",
        "name": "my-boot-volume"
      }
    },
    {
      "id": "e77125cb-4df0-4988-a878-531ae0ae0b70",
      "name": "my-volume-attachment-1",
      "volume": {
        "crn": "crn:[...]",
        "id": "2cc091f5-4d46-48f3-99b7-3527ae3f4392",
        "name": "my-data-volume"
      }
    }
  ],
  "volume_bandwidth_qos_mode": "weighted",
  "vpc": {
    "crn": "crn:[...]",
    "id": "f0aae929-7047-46d1-92e1-9102b07a7f6f",
    "name": "my-vpc",
    "resource_type": "vpc"
  },
  "zone": {
    "name": "us-south-1"
  }
}
  1. Utilisez d'autres méthodes de l'API pour obtenir davantage d'informations sur l'instance, telles que le volume et les pièces jointes du réseau, ou pour recueillir des informations sur les clés SSH, les groupes de placement ou les interfaces réseau virtuelles. Pour plus d'informations, voir la référence API du service de métadonnées et le résumé des informations sur le service de métadonnées.

Le tableau suivant présente d'autres méthodes pour les requêtes API GET que vous pouvez utiliser pour obtenir des informations spécifiques sur l'instance.

URI de métadonnées
Noeud final d'API Description
/metadata/v1/instance/cluster_network_attachments Liste des pièces jointes du réseau de clusters
/metadata/v1/instance/cluster_network_attachments/{id} Récupérer une connexion réseau du cluster
/metadata/v1/instance/network_attachments Liste des pièces jointes au réseau
/metadata/v1/instance/network_attachments/{id} Récupérer une pièce jointe du réseau
/metadata/v1/instance/network_interfaces Répertorier les métadonnées de toutes les interfaces réseau d'une instance.
/metadata/v1/instance/network_interfaces/{id} Extraire les métadonnées d'une interface réseau par ID.
/metadata/v1/instance/software_attachments Répertorier les métadonnées de toutes les pièces jointes logicielles d'une instance.
/metadata/v1/instance/software_attachments/{id} Récupérer les métadonnées d'une pièce jointe logicielle à l'aide de son ID.
/metadata/v1/instance/volume_attachments Répertorier les métadonnées de toutes les connexions de volume d'une instance.
/metadata/v1/instance/volume_attachment/{id} Extraire les métadonnées d'une connexion de volume par ID.

Etapes suivantes

Utilisez le profil de confiance de l'instance et générez un jeton IAM à partir du jeton d'accès d'identité pour accéder à d'autres services compatibles avec IAM. Voir Utilisation d'un profil sécurisé pour appeler les activés pour IAM.