检索有关已配置的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机器的订单用户名和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

基本上,如果要使用安装后脚本,则usermetadata非常有用。 订购新服务器不需要usermetadata值

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