【问题标题】:Getting Current Nova Instance ID获取当前 Nova 实例 ID
【发布时间】:2023-03-26 00:05:02
【问题描述】:

我正在使用 jclouds SDK 2.1.0 来处理 OpenStack 资源,假设我有一个正在运行的 nova 服务器并且代码正在其上运行,有没有办法获取已经运行的该实例的 ID 或详细信息?意思是获取实例详细信息(并非针对所有实例,仅针对我正在使用的实例)

类似函数的东西存在于this AWS class

谢谢

编辑

我发现在创建启用configuration drive 的服务器时,有一个名为meta_data.json 的文件包含服务器ID (UUID),但是如何通过代码实现呢?我可以使用 jclouds SKD 获取该文件吗?

【问题讨论】:

    标签: openstack-nova jclouds


    【解决方案1】:

    当您使用 jclouds ComputeSevice 创建服务器时,返回的 NodeMetadata 对象有一个包含服务器 ID 的 providerId 字段。如果你直接使用 Nova API,你会得到一个已经有 ID 的 Server 对象。

    【讨论】:

    • 谢谢,但是假设我已经创建了一个实例,我不能使用这种方式来获取实例的 ID,我发现最接近我需要的是向这个 URL 发送 HTTP 请求: http://169.254.169.254/openstack/2012-08-10/meta_data.json 在实例中,它解释了here
    • 是的。那么您想要的是从“实例本身内部”获取实例ID,对吗?那么正确的方法是使用元数据服务。 jclouds 是一个帮助“配置”基础设施的库,因此它通常在实例“外部”执行。
    【解决方案2】:

    根据metadata APIs,它只是一个发送到 URL 的 HTTP GET 请求到:http://169.254.169.254/openstack/2012-08-10/meta_data.json 但诀窍是从 Nova 服务器本身发送这个请求,所以我打开了一个 nova 服务器的控制台和我运行了命令:curl http://169.254.169.254/openstack/2012-08-10/meta_data.json

    此命令将返回一个包含服务器 ID (UUID) 的 JSON 对象,请记住,首先是,在创建 Nova 实例时,您应该检查配置驱动器选项

    second,服务器中有多个meta_data.json文件,文件夹2012-08-10中存在的文件包含服务器ID(UUID)

    【讨论】:

      猜你喜欢
      • 2019-11-15
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多