Согласно документации 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