从实例访问元数据
最常见的情况是,你想从运行中的实例中收集元数据,并用它来引导另一个虚拟服务器实例。 查看启用元数据服务、创建实例身份访问令牌和访问元数据的一般程序和分步说明。
访问实例元数据的常规过程
表 1 描述了访问实例元数据时涉及的步骤。 该信息提供了每个步骤的上下文,并链接到用于完成该步骤的特定信息。 在实际环境中,步骤 3-5 更有可能由实例的初始化软件在启动时或使用 cloud-init 启动。
步骤 | 上下文 | 已调用服务 | 用户操作 |
---|---|---|---|
1 | IBM Cloud | VPC UI,CLI 和 API | 元数据服务默认为禁用。 您可以通过控制台、CLI 或 API 在现有实例上启用元数据服务。 客户用户数据是在创建实例时指定的。 |
2 | IBM Cloud |
|
通过正常启动操作登录实例。 |
3 | VPC 实例 | 元数据服务 | 运行 curl 命令,调用元数据令牌服务 获取实例身份访问令牌。 |
4 | VPC 实例 | 元数据服务 | 运行 curl 命令,调用元数据服务 检索实例信息。 将传递来自上一步的令牌并返回元数据。 |
5 | VPC 实例 |
|
解析上一步中返回的 JSON 以获取用户数据。 |
用于从实例访问元数据的端到端过程
在控制台中找到正在运行的实例并启用元数据服务
-
在 IBM Cloud 控制台中,单击导航菜单图标
> 基础架构
> 计算 > 虚拟服务器实例。
-
在列表中找到正在运行的实例。 单击实例名称,显示其详细信息。 在“概览”选项卡上,滚动到“高级配置”详细信息,然后单击切换按钮启用元数据服务。
-
如果实例已有浮动 IP 地址(显示在 "网络 "选项卡上),则使用该地址建立与服务器的安全连接。 如果没有浮动 IP 地址,请为其分配一个。 有关详细信息,请参阅创建虚拟服务器实例主题中的 下一步。
通过 CLI 查找运行中的实例并启用元数据服务
-
登录 IBM Cloud CLI。
-
使用
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 概要文件上都受支持。
-
运行
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
-
运行带有
--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
-
如果实例已有浮动 IP 地址,则使用该地址建立与服务器的安全连接。 如果没有浮动 IP 地址,请为其分配一个。 有关详细信息,请参阅创建虚拟服务器实例主题中的 下一步。
使用 API 查找运行中的实例并启用元数据服务
-
通过 列出区域中可用的实例 来找到正在运行的实例。 从回复中选择实例 ID。
curl -X GET "$vpc_api_endpoint/v1/instances?version=2025-05-13&generation=2" -H "Authorization: Bearer $iam_token"
-
读取所选实例的信息,以确认元数据服务是否已启用。
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 } . . . }
-
通过请求实例启用元数据服务。
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 } }`
-
如果实例已有浮动 IP 地址,则使用该地址建立与服务器的安全连接。 如果没有浮动 IP 地址,请为其分配一个。 有关详细信息,请参阅 登录实例。
建立与虚拟服务器实例的安全连接
下面的示例显示了连接到基于 Linux 的服务器实例的命令语法。
ssh -i <path to your private key file> <default-user-account>@<floating ip address>
如果服务器运行的是 Windows 操作系统,请使用 RDP 客户端。
有关更多信息,请参阅连接到 Linux 实例或连接到 Windows 实例。
从元数据服务中收集信息
-
从虚拟服务器实例向元数据令牌服务发出请求,以检索实例身份访问令牌。 指定令牌的有效期。 例如,您可以指定 3600 秒(1 小时)。
export instance_identity_token=`curl -X PUT "http://api.metadata.cloud.ibm.com/instance_identity/v1/token?version=2024-11-12"\ -H "Metadata-Flavor: ibm"\ -H "Accept: application/json"\ -d '{ "expires_in": 3600 }' | jq -r '(.access_token)'`
响应会提供实例身份访问令牌。 解析器会将其保存到
.access_token
文件中。jq
jq
可能不会预装在创建实例时可用的所有 VPC 映像 中。 在使用前,您可能需要安装jq
或使用您选择的其他解析器。 -
现在,您可以向元数据服务发出 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 $instance_identity_token"\ | jq -r
API 响应包含诸如 SSH 密钥和用户数据等信息,这些信息是在虚拟服务器配置时指定的。 如果配置了密码,那么还会返回该信息。
-
使用其他 API 方法获取更多有关实例的信息,如卷和网络附件,或收集有关 SSH 密钥、放置组或虚拟网络接口的信息。 更多信息,请参阅 元数据服务 API 参考和 实例元数据服务信息摘要。
后续步骤
将可信概要文件用于实例,并生成从实例身份访问令牌到其他启用 IAM 的服务的 IAM 令牌。 请参阅 使用可信概要文件来调用启用 IAM 的服务。