1

マスターとスレーブのpostgresqlサーバーをセットアップしました。dbmaster サーバーを表示するには、dbslave サーバーが必要です。だから私はノード内に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 に答える