Назад | Перейти на главную страницу

Загрузите все с помощью 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

Возможно, есть сторонние инструменты для этого?

Для этого можно написать простой сценарий 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. Например:

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

Этот метод также используется для обновление с 10 до 11 шеф-сервера.

Я написал небольшой плагин для ножей под названием sync-all, описанный ниже, который также выполняет это:
https://github.com/cdoughty77/knife-sync-all

В настоящее время документы скажи, ты должен просто knife upload /. В документации есть и другие возможности.

Из репозитория шеф-повара.

Если вы выполните knife upload . он загружает все.