По мотивам evtuhovich.ru

0. Предварительный этап

Убедитесь, что у вас установлен ruby-gem

1. Для начала установим knife-solo:

gem install knife-solo

2. Теперь создадим новую поваренную книгу в папке COOKBOOKNAME:

knife solo init COOKBOOKNAME

3. Подготавливаем машину, которая будет получать наши поваренные книги (разумеется, проще будет, если вы уже скопировали туда свой ключ (ssh-copy-id ubuntu@myhostname)):

cd COOKBOOKNAME
knife solo prepare ubuntu@myhostname

После этого в папке COOKBOOKNAME\nodes появляется json-файл конфигурации машины, в котором нет ничего, кроме адреса (или имени) машины:

{
  "run_list": [

  ],
  "automatic": {
    "ipaddress": "myhostname"
  }
}

4. Начинаем пользоваться knife-solo, приведем json машины к следующему виду:

Создаем рецепт:

mkdir -p cookbooks/helloworld/recipes # создаем папку с именем рецепта
touch cookbooks/helloworld/recipes/default.rb # создаем пустой рецепт

В файл default.rb вставляем текст следующего содержания:

file "/tmp/helloworld.txt" do
  owner "root"
  group "root"
  mode 00544
  action :create
  content "Hello, Implementor!"
end

Здесь мы пишем рецепт на создание нового файлика в папке /tmp с указанным содержанием, кастомными правами и владельцем файла.

Приводим файл машины (nodes/myhostname.json) к следующему виду:

{
  "run_list": [
        "recipe[helloworld]" # добавляем к запуску наш рецепт
  ],
  "automatic": {
    "ipaddress": "myhostname"
  }
}

5. И варим:

knife solo cook myhostname

На этом все.

Дополнительные ссылки

  1. Разумеется, больше информации на оф. сайте.
  2. Небольшим подспорьем являлся репозиторий macovsky.
  3. Блог alxschwarz.
  4. Немного толковой информации на Habrahabr.