我已经创建了一个食谱,并用manage.chef.io
它来托管和部署它。我已将食谱托管在 GitHub 私人存储库中。
考虑这样一个场景:
如果我在食谱中做了一些修改knife cookbook upload
,但是我忘记推将其上传到 Github。
我如何确保这种情况不会发生?即使是无意中也不会发生。我如何确保任何时候每个人都拥有最新的 repo,否则就不能。就像你没有编辑更改就knife upload
不能一样。git push
git pull
我的同事从 GitHub 拉取了代码,但没有看到任何变化。因此他自己做了一些修改knife cookbook upload
。但他会替换我的更改,因为他有一个旧版本。
那么在多个 DevOps 之间管理菜谱的最佳实践是什么?
答案1
最简单的方法通常是让推送到 Chef Server 的操作由您的 CI 服务(如 Jenkins)控制。这会强制围绕源代码控制进行序列化,因为没有人有权限运行食谱上传。您也可以确保进行足够的沟通以避免这种情况,但这更容易出错。一些围绕策略文件的 Chef 工作流程根本不使用正常的食谱上传,因此不会出现此问题。