我有一个主从服务器postgresql服务器的设置。我需要我的dbslave服务器才能看到我的dbmaster服务器。所以在我的pg_hba.conf
中,我在节点中有一个ruby变量名private_ip
。
模板pg_hba.conf
如下所示:
<% node["postgresql"]["pg_hba"].each do |hba| %>
<%= hba['type'] %> <%= hba['db'] %> <%= hba['user'] %> <%= hba['addr'] %> <%= hba['method'] %>
<% end %>
在食谱中它看起来像这样。它将获取节点的每个哈希值。
slave.rb
食谱:
# hba
node.override["postgresql"]["pg_hba"] = [ { "type" => "host", "db" => "all", "user" =>"all", "addr" => "<%= private_ip %>", "method" => "trust"}
要获取IP地址,我使用搜索方法。
dbserver = search(:node, "role:pg_server_master")
private_ip = "#{dbserver[0][:private_ip]}"
puts private_ip
现在的问题是 - 如何将搜索结果的值放在node.override变量<%= private_ip =>
上。
请问任何想法?
答案 0 :(得分:1)
我使用了大厨的搜索方法:
# getting the private ip for pg_hba.conf
dbserver = search(:node, "role:oftheserver")
private_ip = dbserver[0]['ipaddress']
mask = @ipaddress.to_s + "/32"
因此,在我的情况下,此搜索的输出将为x.x.x.x / 32。
答案 1 :(得分:0)
将必要的变量传递给模板:
template "/etc/whatever/pg_hba.conf" do
source "pg_hba.conf.erb"
mode 0644
owner "root"
group "root"
variables({
:private_ip => private_ip
})
end
然后在模板中使用它:
<%= @private_ip =>