インスタンスからメタデータを取得する

多くの場合、実行中のインスタンスからメタデータを収集し、それを使用して別の仮想サーバーインスタンスを起動します。 また、ネットワーク添付ファイルやボリューム添付ファイルに関する情報を収集する必要がある場合もある。 メタデータ・サービスへのアクセスを有効化し、ID アクセストークンを作成し、メタデータを取得するための一般的な手順とステップバイステップの説明を確認します。

インスタンスのメタデータにアクセスする一般的な手順

表1に、メタデータにアクセスする際の手順を示す。 この情報では、各ステップのコンテキスト、およびステップを完了するための特定の情報へのリンクを提供します。 実際の環境では、手順 3 ~ 5 は、起動時にインスタンスの初期化ソフトウェアによって、あるいは cloud-init を使用して実行される可能性が高いでしょう。

メタデータにアクセスするための一般的な手順
手順 context 呼び出されるサービス ユーザー・アクション
1 IBM Cloud VPC UI、CLI、API メタデータサービスへのアクセスは、デフォルトでは無効になっています。 コンソール、CLI、またはAPIを使用して、既存のインスタンスのメタデータ・サービスへのアクセスを有効にできます。
2 IBM Cloud
通常の起動手順に従って、インスタンスにサインオンしてください。
3 VPC インスタンス メタデータ・サービス curl コマンドを実行して、メタデータ・トークン・サービスを呼び出し、 IDアクセストークンを取得します
4 VPC インスタンス メタデータ・サービス curl コマンドを実行してメタデータ・サービスを呼び出し、 インスタンス情報を取得する。 前のステップで取得したトークンが渡され、メタデータが返されます。
5 VPC インスタンス
前のステップで返された JSON を解析して、ユーザー・データを取得します。

インスタンスからメタデータにアクセスするためのエンドツーエンドの手順

実行中のインスタンスを特定し、コンソールでメタデータ・サービスへのアクセスを有効にする

  1. IBM Cloud コンソールでNavigation メニューアイコン メニューアイコン > Infrastructure VPC アイコン > Compute > Virtual server instances をクリックします。

  2. 実行中のインスタンスをリストで探す。 インスタンス名をクリックすると、その詳細が表示されます。 概要」タブで「 詳細設定」の詳細までスクロールし、メタデータ・サービスへのアクセスを許可するトグルをクリックする。

  3. インスタンスがすでにフローティングIPアドレスを持っている場合([Networking]タブに表示)、そのアドレスを使用してサーバーへのセキュアな接続を確立します。 フローティングIPアドレスがない場合は、割り当ててください。 詳細については、仮想サーバーインスタンスの作成トピックの 次の 手順を参照してください。

実行中のインスタンスを特定し、CLIからメタデータ・サービスにアクセスできるようにする

  1. IBM Cloud CLI にログインします。

  2. 実行中のインスタンスを見つけるには、 ibmcloud is instances コマンドを使用します。このコマンドは、リージョン内で利用可能なインスタンスを一覧表示します。

    $ 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         -                  -                    -                      -
    

    メタデータ・サービスは、すべてのストック・イメージ、カスタム・イメージ、および CPU プロファイルでサポートされます。

  3. ibmcloud is instance コマンドを実行し、メタデータ・サービスへのアクセスが有効かどうかを確認する。 次の例では、値 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. メタデータ・サービスへのアクセスを有効にするには、 ibmcloud is instance-update コマンドにオプション --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. インスタンスがすでにフローティングIPアドレスを持っている場合は、そのアドレスを使用してサーバーへのセキュアな接続を確立する。 フローティングIPアドレスがない場合は、割り当ててください。 詳細については、仮想サーバーインスタンスの作成トピックの 次の 手順を参照してください。

実行中のインスタンスを特定し、APIを使用してメタデータ・サービスへのアクセスを有効にする

  1. リージョン内で 利用可能なインスタンスをリストアップして、実行中のインスタンスを見つけます。 レスポンスからインスタンスIDを選択する。

    curl -X GET "$vpc_api_endpoint/v1/instances?version=2025-05-13&generation=2" -H "Authorization: Bearer $iam_token"
    
  2. 選択したインスタンスの情報を取得 し、メタデータ・サービスへのアクセスが有効かどうかを確認する。

    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"
    

    APIレスポンスには、 metadata_service セクションに "enabled": false と表示されている。

    {
     "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. インスタンスへのリクエストを行うことで、メタデータ・サービスへのアクセスを有効にする。 PATCH /instances インスタンスにリクエストすることで、メタデータ・サービスへのアクセスを有効にします。

    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. インスタンスがすでにフローティングIPアドレスを持っている場合は、そのアドレスを使用してサーバーへのセキュアな接続を確立する。 フローティングIPアドレスがない場合は、割り当ててください。 詳細については、 インスタンスへのログインを 参照してください。

仮想サーバーインスタンスへのセキュアな接続の確立

Linux

次の例は、 Linux-ベースのサーバー・インスタンスに接続するために使用するコマンド構文を示している。

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

Windows

Windows ユーザーは、メタデータ サービスにアクセスして利用するために、追加の要件があります。 詳細については、「 メタデータサービスを使用するための Windows サーバーの設定」を 参照してください。

サーバーがWindows OSを実行している場合は、RDPクライアントを使用して接続する。

詳しくは、Linux インスタンスへの接続または Windows インスタンスへの接続を参照してください。

メタデータ・サービスからの情報収集

仮想サーバーインスタンスから ID API にリクエストを行い、ID トークンを取得します。 トークンの有効期間を指定します。 例えば、3600秒(1時間)を指定することができる。

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)'`

応答は ID アクセストークンを提供する。 パーサーはそれを .access_token ファイルに保存する。

この例では、パーサーとして jq (MIT license でライセンス交付を受けるサード・パーティーのツール) を使用します。 一部のオペレーティングシステムでは、デフォルトで jq が含まれていません。 使用前に jq をインストールするか、別の JSON パーサーに置き換えてください。

初期化情報の取得

IDトークンを取得したら、今度はメタデータ・サービスにAPIリクエストを行い、初期化情報を収集することができる:

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

API レスポンスには、仮想サーバーのプロビジョニング時に指定した SSH キーやユーザーデータなどの情報が含まれます。 パスワードを構成した場合は、その情報も返されます。 この情報を使用して、新しい仮想サーバー・インスタンスをブートストラップできます。

インスタンス情報の取得

GET "/metadata/v1/instance" リクエストを発行して、インスタンスに関する詳細情報を取得します。

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

応答には、ネットワーク・インターフェース、コンピュート・プロファイル、ボリューム接続を含む、インスタンスに関するすべての詳細がリストされます。

{
  "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. 他のAPIメソッドを使用して、ボリュームやネットワーク・アタッチメントなどのインスタンスに関する詳細情報を取得したり、SSHキー、配置グループ、仮想ネットワーク・インターフェースに関する情報を収集したりする。 詳細については、 メタデータ・サービスAPI リファレンスおよび メタデータ・サービス情報の 概要を参照のこと。

次の表は、インスタンスに関する特定の情報を取得するために実行できるAPI GETリクエストのメソッドをさらに示したものです。

メタデータURI
API エンドポイント 説明
/metadata/v1/instance/cluster_network_attachments クラスターネットワークのアタッチメントを一覧表示
/metadata/v1/instance/cluster_network_attachments/{id} クラスタのネットワーク接続情報を取得する
/metadata/v1/instance/network_attachments ネットワークの添付ファイルを一覧表示
/metadata/v1/instance/network_attachments/{id} ネットワーク添付ファイルの取得
/metadata/v1/instance/network_interfaces インスタンスのすべてのネットワーク・インターフェースのメタデータをリストします。
/metadata/v1/instance/network_interfaces/{id} ID ごとのネットワーク・インターフェースのメタデータを取得します。
/metadata/v1/instance/software_attachments インスタンスに添付されているすべてのソフトウェアのメタデータを一覧表示します。
/metadata/v1/instance/software_attachments/{id} ID に基づいて、ソフトウェア添付ファイルのメタデータを取得します。
/metadata/v1/instance/volume_attachments インスタンスのすべてのボリューム接続のメタデータをリストします。
/metadata/v1/instance/volume_attachment/{id} ID ごとのボリューム接続のメタデータを取得します。

次のステップ

インスタンスの信頼済みプロファイルを使用し、そのIDアクセストークンから、IAM対応の他のサービスへのIAMトークンを生成します。 トラステッド・プロファイルを使用した IAM 対応サービスの呼び出しを参照してください。