我试图管理厨师角色如下
在这种情况下,属性节点[" customer"] [" name"]是一个数组。
在配方中,我需要获取数组节点的第一个元素的值[" customer"] [" name"] as" foo"。
"customer" => {
"name" => {
["foo"] => {
"prod" => {
"apache" => {
"listening" => 81
},
"database" => {
"type" => "postgres"
}
},
"dev" => {
"apache" => {
"listening" => 81
},
"database" => {
"type" => "postgres"
}
}
}
}
}
我做了什么:
node[:customer][:name].each do |customer|
Chef::Log.info("CONFIGURING --- #{customer}")
end
但是意外的是,变量"客户"包含值
INFO:CONFIGURING --- [" [\" foo \"]", {"刺" = GT; {"阿帕奇" = GT; {"听音" = GT; 81}, "数据库" = GT; {"类型" = GT;" postgres的"}}, "设备" = GT; {"阿帕奇" = GT; {"听音" = GT; 81}, "数据库" = GT; {"类型" = GT;" postgres的"}}}]
而不仅仅是简单的价值" foo"
我怎样才能获得简单的价值" foo"而不是整个递归哈希?
由于
答案 0 :(得分:0)
node[:customer][:name].each do |customer,properties|
Chef::Log.info("CONFIGURING --- #{customer}")
end
你只是在那里使用ruby迭代一个哈希,你必须告诉ruby你不希望获得完整的对象,只需要键和其他东西来获得其余的属性。
答案 1 :(得分:-1)
不能在Chef角色中实现数组。 Chef角色只能将属性设置为某个值。例如,下面应该可以正常工作。
"customer" => {
"name" => "foo"
}