【发布时间】:2015-12-03 23:12:26
【问题描述】:
我有一个问题,我有 100 多台服务器,我需要确保某个特定进程正在运行……这 100 台服务器分为 4 个不同的环境,并且我配置了许多角色。在这种情况下,厨师代码是最基本的:
service "some_process" do
supports :status => true
action :start
end
假设我想在特定环境、节点或角色上重新启动此过程。我用过这样的东西:
knife ssh "name:node_name" "service some_process restart" -i id_rsa
knife ssh "name:role_name" "service some_process restart" -i id_rsa
knife ssh "name:environment_name" "service some_process restart" -i id_rsa
但是,这已被我的内部安全团队标记为安全违规。所以我必须找到一个替代方案......
将配方从“开始”临时更改为“重新启动”然后通过单个节点、整个环境甚至某些角色进行管理的最佳方法是什么?是否有一种机制可以通过编辑运行列表和/或利用属性来覆盖“启动”并强制“重新启动”?
【问题讨论】:
-
虽然一个答案已被接受并且您想要实现的设计听起来很糟糕,但您的问题是是否可以做到? -- 是的,有可能- 您始终可以通过基于计算变量的配方中的分支来实现它。另一种方法是使用数据包并将值设置在中心位置,可以在
chef-client运行期间检索。使用数据包这样做意味着您不会修改您的食谱,也无需担心推出新版本的食谱。
标签: chef-infra knife