我现在不想使用 Chef Server,而是想利用 Chef Solo。我需要将特定服务器的配置(属性和文件)保存在单独的 Git 存储库中。这是为了将食谱保存在开放存储库中,同时将配置隐藏在私有存储库中。
Chef 中是否有内置功能可以从 Git repo 获取属性和文件?您通常如何获取它们?
答案1
研究使用 Berfshelf 和环境食谱模式。这种设计模式将所有食谱放在它们自己的存储库中,无论是公共的还是私有的。
具体来说,对于特定服务器的配置,您可以使用私有存储库中的食谱,并使用该博客文章中提到的配方。或者使用类似 的语句node.set
在 中设置属性。非私有的开放存储库食谱可以进行 berksified 并从私有食谱中运行。attributes/default.rb
default['foobar']['version'] = '1.2.3'
include_recipe "{open-cookbook}::{open-recipe}"
我以前曾使用过这种设计模式与刀独奏,尤其是自从 0.4.x 版本添加了 Berkshelf 支持之后。具体来说,我使用命令knife solo cook someuser@localhost --sync-only
。这将准备在目标机器上安装 kitchen(下载所有 berksified cookbooks、创建 solo.rb 等),但实际上并不运行代码。或者调用 as 来knife solo cook someuser@targetnode
准备、同步并在目标节点上运行 chef-solo。