gba*_*aii 2 ruby erb chef-infra
我有这些数组
services=["service1","service2","service3"]
ports=[11001,11002,11003]
Run Code Online (Sandbox Code Playgroud)
对于每个服务元素,我需要在conf.erb文件中分配端口的对应元素.我到现在所拥有的是:
node['recipe']['services'].each do |serv|
template "/etc/services/conf.d/service-#{serv}.conf" do
source "service-#{serv}.conf.erb"
owner 'serviceaccount'
group 'serviceaccount'
mode '0644'
variables(
:service => serv,
:ports => node['services']['ports']
)
end
end
Run Code Online (Sandbox Code Playgroud)
听起来很糟糕,结果很糟糕.
结果应该是3个conf文件:
服务service1.conf:
服务服务1港口11001
服务service2.conf:
服务服务2港口11002
服务service3.conf:
服务服务3港口11003
任何帮助表示赞赏.
谢谢,加布里埃尔
我该如何解决这个问题:
在attributes/default.rb:
default['services']['service1']['port'] = 11001
default['services']['service2']['port'] = 11002
default['services']['service3']['port'] = 11003
Run Code Online (Sandbox Code Playgroud)
或(替代语法):
default['services'] = {
"service1" => { "port" => 11001 },
"service2" => { "port" => 11002 },
"service3" => { "port" => 11003 }
}
Run Code Online (Sandbox Code Playgroud)
在recipes/default.rb:
node['services'].each do |serv,properties|
template "/etc/services/conf.d/service-#{serv}.conf" do
source "service-#{serv}.conf.erb"
owner 'serviceaccount'
group 'serviceaccount'
mode '0644'
variables(
:service => serv,
:ports => properties['port']
)
end
end
Run Code Online (Sandbox Code Playgroud)
当迭代哈希(什么节点属性基于)时,您可以使用|key,values|ruby 的语法来获取第一个变量中的键和第二个变量中的值(可能是另一个哈希).
| 归档时间: |
|
| 查看次数: |
8511 次 |
| 最近记录: |