1

我有一个主从 postgresql 服务器的设置。我需要我的 dbslave 服务器来查看我的 dbmaster 服务器。所以在我的节点中pg_hba.conf有一个红宝石变量名。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 =>

请问有什么想法吗?

4

2 回答 2

1

我使用了厨师的搜索方法:

  # getting the private ip for pg_hba.conf
  dbserver = search(:node, "role:oftheserver")
  private_ip = dbserver[0]['ipaddress']
  mask = @ipaddress.to_s + "/32"

所以这个搜索的输出将是 xxxx/32 在我的例子中。

于 2013-06-04T07:18:10.453 回答
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 =>
于 2013-05-15T06:21:52.180 回答