设置 Windows 服务器以使用实例元数据服务
要从 Windows 服务器访问实例元数据,需要找到缺省网关并添加路由。
概述
要在 Windows 上使用元数据服务,需要为元数据设置一个链接本地地址的默认路由。 为此,需要找到默认网关的 IP 地址,然后为链路本地地址添加路由。 在此初始设置后,将进行调用以访问实例元数据。
本主题中的信息作为单独的步骤提供。 更有可能的是,您将设置一个 cloudbaseinit
自动化过程,该过程将执行单个过程中的所有步骤。 提供的示例用于说明您需要的内容,但您可以使用其他方法来获取缺省网关并添加路径。
步骤 1-找到缺省网关的 IP
以管理员身份运行,找到缺省网关的 IP。 一种方便的方法是使用 Powershell Get-NetRoute
命令。
使用 PowerShell Get-NetRoute cmdlet 查找默认网关的 IP。 此命令获取缺省路由 (也称为缺省网关) 的下一个中继段。 有关详细信息,请参阅 Windows Powershell 文档中的 Get-NetRoute.
从 Windows 终端,以下示例调用 Powershell Get-NetRoute
命令以获取缺省 IP 路由,并将这些路由传递到 SelectObject cmdlet,然后显示每个缺省路由的 NextHop 属性。
C:\> powershell "Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object -ExpandProperty "NextHop""
检索的第一个 IP 地址是缺省路由。 将输出放入变量中。
步骤 2: 向缺省网关添加路由
元数据服务使用链接本地地址( 169.254.169.254 )来 设置对服务的访问,并 从实例中检索元数据。
设置默认路由,以便链路本地地址可以到达默认网关。 从 windows 或 Powershell 终端,您可以指定:
C:> route -p add 169.254.169.254 MASK 255.255.255.255 $DEFAULT_GATEWAY
Python 自动化脚本可能包含类似如下的代码:
command = 'route -p add 169.254.169.254 MASK 255.255.255.255 ()'.format(default_gateway)
这些示例使用 route
命令,但也可以使用 Powershell New-NetRoute
命令并在单个命令中管道路由。 例如,要在单个命令中组合步骤 1 和 2,可以指定:
C:\> powershell "Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object -ExpandProperty "NextHop" | New-NetRoute"
要添加路径,必须以管理员身份在 Windows 服务器上运行。
步骤 3: 以编程方式检索实例元数据
将路由添加到默认网关后,就可以使用链路本地地址访问实例元数据。 使用您选择的工具通过网络 (例如 curl
) 传输数据来构造自动化脚本。
要查看 curl
命令以调用元数据服务 API 并检索数据,请参阅 从正在运行的虚拟服务器实例检索实例元数据。