我面临的问题是当我试图为引导‘m自动化一个terraform脚本时。我将所有模板保存在json文件中,根据实例需要一个、两个或多个模板来创建节点json文件。我的代码看起来是:
template.each do |t|
node = JSON.parse(File.read("./terraform/node/#{t}.json"))
atr << node.each { |k, v| puts "#{k}: #{v}" }
concatenated = atr.flatten
temp = concatenated
File.open("./terraform/node/#{instance_name}.json","w") do |f|
f.puts JSON.pretty_generate(temp)
end
end
输出文件如下所示:
[{"haproxy"=>{"app_server_role"=>["s1", "s2"]}}, {"apache"=>{"listen_ports"=>["80", "443"]}}, {"tags"=>[]}]
问题是,在数组中,我们在erb中存储了确切的模板:
{"haproxy"=>{"app_server_role"=>["s1", "s2"]}}
{"tags"=>[]} ...
我想要的是一个有效的包含模板内容的json,如:
{"haproxy"=>{"app_server_role"=>["s1", "s2"]}, "apache"=>{"listen_ports"=>["80", "443"]}, {"tags"=>[]}
发布于 2018-02-20 08:30:47
output_file = [{"haproxy"=>{"app_server_role"=>["s1", "s2"]}}, {"apache"=>{"listen_ports"=>["80", "443"]}}, {"tags"=>[]}]
output_file.each_with_object({}) { |h, h2| h2.merge!(h) }
=> {"haproxy"=>{"app_server_role"=>["s1", "s2"]}, "apache"=>{"listen_ports"=>["80", "443"]}, "tags"=>[]}
mudasobwa提出的另一个很好的选择是:
output_file.reduce(&:merge)
https://stackoverflow.com/questions/48889784
复制