使用 Chef 时对节点和角色进行版本控制是好习惯吗?如果是这样,这样做的好方法是什么?
看起来应该能够获取使用创建的 JSON 文件树chef_server_backup.rb
并将其简单地检查到 VC 中。有更好的选择吗?
更新
事实证明,检查由生成的 JSONchef_server_backup.rb
并不是一个好的解决方案。问题是脚本生成的 JSON 不稳定。每次哈希以不同的顺序出现并且生成的文件与以前的版本完全不同......即使它们在解析为 JSON 时意味着相同的事情。我最好只保存压缩包。
(但是如果我可以通过对属性进行排序来规范化 JSON 文件……)
我尝试尽可能多地保留我的配置作为 JSON 文件,并使用
knife [noun] from file name.json
. 我从https://github.com/opscode/chef-repo的存储库开始,并将所有 JSON 文件保存在适当的目录中。您也可以对 YAML 或 Ruby 文件执行相同的操作。使用show
命令,例如knife role show apache2 -Fj > roles/apache2.json
从厨师服务器上已有的现有数据创建文件。基于“来自文件”的方法的一些好处是:
git diff
,并查看不仅仅是食谱版本的历史记录唯一不在opscode/chef-repo中的是节点文件。您也可以从文件导出/导入节点,但通常不推荐这样做,因为节点应该是一次性的。我喜欢Nathen Harvey曾经说过的话:“将节点视为牛,而不是宠物。”