我有一个问题,我有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'运行期间检索。用数据包做这件事意味着你不会修改你的食谱,也不需要担心推出新版本的食谱。 – MrRoth