Ruby не может получить метаданные виртуальной машины Azure из службы метаданных экземпляра Azure - PullRequest
1 голос
/ 24 мая 2019

Согласно документации MS https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service Azure предоставляет службу метаданных экземпляра по адресу "http://169.254.169.254/metadata/instance?api-version=2017-08-01". Но мне не удалось получить метаданные на одной из моих виртуальных машин с помощью ruby. Хотя я могу получить метаданные с помощьюPowerShell. Среда ОС: Windows Server 2012R2. Версия Ruby: ruby ​​2.5.3p105 (2018-10-18 редакция 65156) [x64-mingw32] Версия PowerShell: 4.0

Код PowerShell:

Invoke-WebRequest -Headers @{"Metadata"="true"} -URI "http://169.254.169.254/metadata/instance?api-version=2017-08-01"

ответ от кода powershell:

StatusCode        : 200
StatusDescription : OK
...

Код Ruby:

require 'net/http'

AZURE_METADATA_ADDR = "169.254.169.254".freeze unless defined?(AZURE_METADATA_ADDR) 
AZURE_METADATA_URL = "/metadata/instance?api-version=2017-08-01".freeze unless defined?(AZURE_METADATA_URL)

def http_get(uri) 
conn = Net::HTTP.start(AZURE_METADATA_ADDR) 
conn.read_timeout = 6 
conn.get(uri, { "Metadata" => "true" }) 
end

puts "Fetching metadata from host #{AZURE_METADATA_ADDR} at #{AZURE_METADATA_URL}" 
response = http_get(AZURE_METADATA_URL)

puts response 

Ответ от кода Ruby:

Fetching metadata from host 169.254.169.254 at /metadata/instance?api-version=2017-08-01 
#<Net::HTTPNotFound:0x0000000002372128> 

Любой может посоветовать, как продолжить устранение неполадок, связанных с этим.Проблема? Является ли проблема внутри Ruby? PS. Это встроенный Ruby, предоставляемый клиентом chef

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...