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