設定 Windows 虛擬伺服器以使用元資料服務
若要從 Windows 虛擬伺服器存取元資料,還需要額外的需求,才能找到預設閘道並新增路由。
概觀
若要在 Windows 上使用元資料服務,您必須設定預設路由至元資料的連結本地位址。 要做到這一點,您需要找到預設閘道的 IP 位址,然後將路由新增到 link-local 位址。 完成初始設定後,您就可以提出 API 請求來存取元資料。
本主題中的資訊以個別步驟呈現。 更有可能的是,您將設定 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 ) 設定對服務的存取,並從實體擷取元資料。
設定預設路由,使 link-local 位址可以到達預設閘道。 從 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:程式化檢索元資料
將路由新增至預設閘道後,就可以使用連結本地位址存取元資料。 使用您選擇的工具來建構自動化 Script,以透過網路傳送資料,例如 curl。
若要查看 curl 指令來呼叫 metadata 服務 API 並擷取資料,請參閱 從實體擷取元 資料。