【问题标题】:Get info from chef server api to chef recipe从厨师服务器 api 获取信息到厨师食谱
【发布时间】:2014-02-14 00:30:25
【问题描述】:
我有以下简单的食谱:
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。
我该怎么做?
【问题讨论】:
标签:
chef-infra
chef-recipe
【解决方案1】:
您需要为此使用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 食谱结构和 Chef Server 设置的更多信息,我无法为您提供“复制粘贴”代码。