假设您有一个标准的 Chef 存储库,其目录如下:
cookbooks
data_bags
environments
roles
有没有办法一次性全部上传?否则你必须这样做:
knife cookbook upload -a
knife data bag from file data_bags/*.json
knife environment from file environments/*.rb
knife role from file roles/*.json
也许有第三方工具可以做这种事情?
您可以编写一个简单的 bash 脚本来执行以下操作:
然后使用 ./script.sh 调用它,这将自动执行所有操作。
确保你使用的是 ruby 1.9,然后安装 knife-essentials
然后将以下内容添加到 ~/.chef/knife.rb
然后你可以下载/上传你的整个服务器,或者只是它的一部分。下载将在您的 chef-repo 中放入大量 .json 文件,这对我找到的备份很有用。
另请注意,如果您将角色存储为 ruby 文件(例如:)
roles/*.rb
,则需要将它们转换为 json。然后你可以从厨师服务器重新下载它们作为 json。例如:knife role from file roles/*.rb
knife download roles/
此方法也用于从厨师服务器 10 升级到 11。
我写了一个名为 sync-all 的小刀插件,如下所述,它也实现了这一点:
https ://github.com/cdoughty77/knife-sync-all
目前文档说你应该简单地
knife upload /
。文档中还有其他可能性。来自厨师库。
如果执行
knife upload .
它会上传所有内容。