Chef
使用 Knife 上傳所有內容
假設您有一個標準 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
也許有第三方工具可以做這種事情?
確保您使用的是 ruby 1.9,然後安裝 knife-essentials
$ gem install knife-essentials
然後將以下內容添加到 ~/.chef/knife.rb
repo_mode 'everything' versioned_cookbooks true chef_repo_path 'PATH/TO/chef-repo'
然後你可以下載/上傳你的整個伺服器,或者只是其中的一部分。下載會在你的 chef-repo 中放置很多 .json 文件,這對我找到的備份很有用。
$ knife download / $ knife upload / $ knife upload /clients
另請注意,如果您將角色儲存為 ruby 文件(例如:)
roles/*.rb
,則需要將它們轉換為 json。然後你可以從廚師伺服器重新下載它們作為 json。例如:
knife role from file roles/*.rb
knife download roles/
此方法也用於從 chef server 10 升級到 11。