從實例擷取元資料

最常見的情況是,您要從執行中的實體收集元資料,然後用它來啟動另一個虛擬伺服器實體。 其他時候,您可能需要收集有關網路附件或卷附件的資訊。 檢視啟用存取元資料服務、建立身分存取標記和擷取元資料的一般程序和逐步指示。

存取實體元資料的一般程序

表 1 描述了存取元資料所涉及的步驟。 此資訊提供每一個步驟的環境定義,以及完成步驟之特定資訊的鏈結。 在實際環境中,步驟 3-5 更可能在啟動時由實例的起始設定軟體或使用 cloud-init 來啟動。

存取元資料的一般程序
步驟 環境定義 已呼叫服務 使用者動作
1 IBM Cloud VPC 使用者介面、CLI、API 對元資料服務的存取預設為停用。 您可以在主控台、CLI 或 API 中啟用對現有實體上的元資料服務的存取。
2 IBM Cloud
使用正常啟動作業登入實例。
3 VPC 實例 meta 資料服務 執行 curl 指令,呼叫元資料令牌服務以 取得身分存取令牌
4 VPC 實例 meta 資料服務 執行 curl 指令,呼叫元資料服務以 擷取實體資訊。 會傳遞前一個步驟中的記號,並傳回 meta 資料。
5 VPC 實例
剖析前一個步驟中傳回的 JSON,以獲得使用者資料。

從實例存取 meta 資料的端對端程序

在主控台中找到正在運行的實例並啟用對元資料服務的存取

  1. IBM Cloud 主控台中,按一下導覽功能表 圖示功能表圖示 > Infrastructure VPC 圖示 > 運算 > 虛擬伺服器實體

  2. 在清單中找到執行中的實例。 按一下實例的名稱,以顯示其詳細資訊。 在「總覽」索引標籤上,捲動至「進階組態」詳細資訊,然後按一下切換鈕以允許存取元資料服務。

  3. 如果實例已有浮動 IP 位址(顯示於「網路」索引標籤),請使用該位址建立與伺服器的安全連線。 如果它沒有浮動 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         -                  -                    -                      -
    

    meta 資料服務在所有庫存和自訂映像檔以及 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. 使用 --metadata-service true 選項執行 ibmcloud is instance-update 指令,啟用對元資料服務的存取。

    $ 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-based 伺服器實例所使用的命令語法。

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

視窗

Windows 使用者在存取和使用元資料服務時有額外的需求。 如需詳細資訊,請參閱 設定 Windows 伺服器以使用元資料服務

如果您的伺服器執行 Windows 作業系統,請使用 RDP 用戶端連接到伺服器。

如需相關資訊,請參閱連接至 Linux 實例連接至 Windows 實例

從元資料服務收集資訊

從虛擬伺服器實例,向身分 API 提出請求,以擷取身分標記。 指定您希望令牌保持有效的時間。 例如,您可以指定 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)'`

回應會提供身分存取標記。 解析器會將其儲存到 .access_token 檔案中。

此範例使用 jq 作為解析器,這是一個依據 MIT 授權條款 發佈的第三方工具。 某些作業系統預設並未內建 jq。 使用前請先安裝 jq ,或改用其他 JSON 解析器。

擷取初始化資訊

取得識別標記後,您就可以向元資料服務提出 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。
/metadata/v1/instance/volume_attachment/{id} 依 ID 擷取磁碟區附件的 metadata。

下一步

使用實例的受信任設定檔,並從身分存取令牌產生 IAM 令牌到其他啟用 IAM 的服務。 請參閱 使用授信設定檔來呼叫啟用 IAM 的服務