Допустим, у вас есть стандартный репозиторий 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, например:
#!/bin/sh
for file in `ls cookbooks`;do
[ -d $file ] && knife cookbook upload cookbooks/$file
done
for file in `ls data_bags | grep \.json$`;do
knife data bag from file data_bags/$file
done
for file in `ls environments | grep \.rb$`;do
knife environment from file environments/$file
done
for file in `ls roles | grep \.json$`;do
knife role from file roles/$file
done
затем вызовите его с помощью ./script.sh, это сделает все автоматически.
Убедитесь, что вы используете Ruby 1.9, затем установите необходимые ножи.
$ gem install knife-essentials
Затем добавьте следующее в ~ / .chef / Knife.rb
repo_mode 'everything'
versioned_cookbooks true
chef_repo_path 'PATH/TO/chef-repo'
Затем вы можете загрузить / загрузить свой сервер полностью или только его части. При загрузке в ваше репозиторий шеф-поваров будет помещено много файлов .json, которые, как я обнаружил, подходят для резервных копий.
$ knife download /
$ knife upload /
$ knife upload /clients
Также обратите внимание, что если у вас есть роли, хранящиеся в виде файлов ruby (например: roles/*.rb
), вам нужно будет преобразовать их в json. Затем вы можете повторно загрузить их с сервера Chef как 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 .
он загружает все.