JSON変数からテンプレートを生成し、以下のコードを参照してください。、私はいくつかのローカルmicroservices(JSONファイルに格納された変数)のためのいくつかのZABBIXテンプレートを生成したい
def self.haproxyTemplates
file = File.read('./services.json')
data_hash = JSON.parse(file)
service = data_hash.keys
service.each do |microservice|
puts "Microservice: #{microservice}"
httpport = data_hash["#{microservice}"]['httpport']
puts "httpPort: #{httpport}"
end
open("./haproxy.xml", 'w+') { |f| f.chmod(0755)
template=IO.read('./haproxyhealth.xml.erb')
x = ERB.new(template).result(binding)
f << "#{x}\n"
}
end
をそして、これは私のservices.jsonファイルです。
{
"microservice1":{
....... ,
"httpport": "27200"
},
"microservice2":{
......,
"httpport": "25201"
}
}
基本的にこの方法では、各マイクロサービスごとにループを実行しているとき、ループを終了するまで正常に実行されます。 haproxy.xmlを作成すると、 "未定義のローカル変数またはmain:Object(NameError)"のためのメソッド `httpport 'が表示されます httpport変数をループ外に置こうとしましたが、同じエラーが表示されます。
も(私は25201で<% = HTTPPORT%>を交換する場合、ファイルがcorectly生成される)ERBファイルの一部を参照してください:あなたが貼り付ける場合はここで
<items><% service.each do |microservice| %>
<item>
<name>haproxy <%= microservice %> - <%= httpport %></name>
......
</item><% end %>
ありがとうございます。 ... の.erbファイル –