我已经推出了BVT(自动化配方),它将作为每个厨师 - 客户端的一部分在客户端服务器上运行,但我们需要修改它,例如,BVT配方需要仅触发应用程序部署而不是其他配置更改。
请告诉我如何执行此操作
答案 0 :(得分:0)
我们遵循的方法是使用数据库在我们的部署配方中设置deploy_allowed标志和帮助器方法,以测试是否允许部署。
辅助方法看起来像(法语抱歉):
module Company
def can_deploy?(bag, env, name)
liv = data_bag_item(bag, env)
msg = "Aucune entree trouvee, * ou #{name} pour l'environnement #{env}, deploiement refuse."
liv_allowed = false
entry = nil
entry = '*' if liv.include?('*')
entry = name if liv.include?(name)
unless entry.nil?
liv_allowed = true if liv[entry] == 'true'
msg = "Deploiement #{liv_allowed ? 'autorise' : 'refuse'} par l'entree #{entry} de #{env}"
end
Chef::Log.info(msg)
liv_allowed
end
end
Chef::Recipe.send(:include, Company)
Chef::Resource.send(:include, Company)
Chef::Provider.send(:include, Company)
和Databag项看起来像(在json中):
{
"id": "I1",
"*": "false",
"I1FR1WAS01": "true",
"I1FR1WAS02": "false",
"I1FR1WAS03": "false",
"I1FR1WAS04": "false"
}
在食谱中我们称之为:
if !can_deploy?("datab_bag",node.chef_environment,node.name) return
在这个例子中,节点的chef_environment是I1,它的名字是I1R1WAS01,它允许它部署而不是其他服务器。
我希望它能帮助您适应您的需求。如果不清楚,请不要犹豫。