Chef

使用 Knife 上傳所有內容

  • March 20, 2017

假設您有一個標準 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。例如:

  1. knife role from file roles/*.rb
  2. knife download roles/

此方法也用於從 chef server 10 升級到 11

引用自:https://serverfault.com/questions/424432