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

Retrieving user metadata about a provisioned SoftLayer server comes back 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

我的打印件一直显示为空。这个问题与我不久前问过的一个类似问题有关(但那个问题的重点转向了 provisionDate):

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

您可以立即创建用户数据以订购新服务器或 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/setUserMetadata http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/setUserMetadata

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

看看这篇文章的例子: http://sldn.softlayer.com/blog/jarteche/getting-started-user-data-and-post-provisioning-scripts