从chef server api获取信息到厨师食谱

时间:2014-02-13 12:25:38

标签: chef chef-recipe

我有以下简单的食谱:

bash "start mongos" do
  code <<-EOH
    mongos --configdb cfg0.example.net:27019,cfg1.example.net:27019,cfg2.example.net:27019 --fork --logpath /var/log/mongodb.log
  EOH
end

cfg0 / 1 / 2.example.net需要从我的厨师服务器动态获取。这些应该用名为cfg1,cfg2和cfg3的节点的IP替换。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您需要使用Chef Search。我不知道你的确切查询是什么,但这是一个例子:

mongos = search(:node, 'role:mongo')
mongo_addresses = mongos.map { |mongo| "#{mongo['fqdn']}:#{mongo['mongo']['port']}" } 

bash "start mongos" do
  code "mongos --configdb #{mongo_addresses.join(',')} --fork --logpath /var/log/mongodb.log"
end

注意:这是出于演示目的。如果没有关于mongo cookbook和Chef Server设置结构的更多信息,我无法为您提供“复制粘贴”代码。