厨师节点和angular色的版本控制

在使用厨师时,版本控制节点和angular色是不是很好的做法? 如果是的话,有什么好办法呢?

它看起来像一个应该能够采取使用chef_server_backup.rb创build的JSON文件的树,只需将其检查到VC。 有更好的select吗?

更新

事实certificate,检查由chef_server_backup.rb生成的JSON 不是一个好的解决scheme。 问题是脚本产生的JSON不稳定。 每次哈希以不同的顺序出现,生成的文件与以前的版本完全不同…即使它们在parsing为JSON时意味着相同的东西。 我会更好的保存压缩tarballs。

(但是如果我可以通过sorting属性来规范化JSON文件…)

我尝试尽可能保留JSON文件的configuration,并使用knife [noun] from file name.json更新厨师服务器。 我从https://github.com/opscode/chef-repo的存储库开始,并将所有的JSON文件保存在相应的目录中。 您也可以使用YAML或Ruby文件。 使用show命令, knife role show apache2 -Fj > roles/apache2.json以从厨师服务器上的现有数据创build文件。

基于“从文件”的方法的一些好处是:

  • 主办厨师和私人厨师之间相对容易移动
  • 您可以使用现有的angular色文件,data_bag项目等与厨师独奏进行testing
  • 通过git diff跟踪变化之间的变化,以及不仅仅是食谱版本的查看历史
  • 数据冗余:如果您的私人厨师服务器或托pipe厨师不可用,您仍然拥有所有基础架构configuration

唯一不在opscode / chef-repo中的是节点文件。 您也可以从文件导出/导入节点,但通常不build议这样做,因为节点应该是一次性的。 我喜欢Nathan Harvey曾经说过的话:“把节点想象成牛,而不是宠物。