检索有关预配的 SoftLayer 服务器的用户元数据返回 null



我正在尝试始终如一地检索每台机器的用户元信息,但我发现我的大多数机器都缺少这些数据。 我想更好地了解此用户数据需要什么。 我很好奇是否可以在不需要用户信息的情况下请求和配置服务器(例如,调用 API 来订购服务器并且没有给出用户数据)。 或者我在如何检索此信息时是否遗漏了某些内容。 这是我正在运行的基本 ruby 程序:

user = ###
api_key = ###
client = SoftLayer::Client.new(:username => user, :api_key => api_key, :timeout => 999999)
list_of_virtual_machines = client['Account'].result_limit(i*50,50).object_mask("mask[id, billingItem[recurringFee, associatedChildren[recurringFee], orderItem[description, order[userRecord[username], id]]], userData]").getVirtualGuests
for x in 0..list_of_virtual_machines.length - 1
  pp list_of_virtual_machines[i]['userData']
  if list_of_virtual_machines[i]['billingItem'] && list_of_virtual_machines[i]['billingItem']['orderItem'] && list_of_virtual_machines[i]['billingItem']['orderItem']['order'] && list_of_virtual_machines[i]['billingItem']['orderItem']['order']['userRecord']
    pp list_of_virtual_machines[i]['billingItem']['orderItem']['order']['userRecord']
  end
end

我的打印始终显示为空。 这个问题与我不久前问的一个类似问题有关(但这个问题的焦点转向了规定日期):如何获取所有使用 Ruby 的 SoftLayer 计算机的订单用户名和配置日期?

他们缺少该数据,因为您没有添加。

您可以立即创建用户数据以订购新服务器或 VSI,您只需使用 createObject 方法或 placeOrder 方法在订单请求中发送数据 http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/createObject。

例如

{ 
    "userData": [ 
        { 
            "value": "someValue" 
        } 
    ] 
}

或者,可以在使用这些方法设置服务器后进行设置

http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/setUserMetadatahttp://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/setUserMetadata

基本上,如果您要使用安装后脚本,则用户元数据很有用。订购新服务器不需要用户元数据值

查看本文的示例:http://sldn.softlayer.com/blog/jarteche/getting-started-user-data-and-post-provisioning-scripts

最新更新