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

Chef = Node Attribute, как управлять ими локально, версировать, а затем загружать?

я был бы велик для помощи. Я вообще не понимаю, как мне управлять данными Node локально с моей системой управления версиями Git?

Исключение из документации Chef: http://wiki.opscode.com/display/chef/Nodes

knife node create foobar


{
    "normal": {
    },
    "name": "foobar",
    "override": {
    },
    "default": {
    },
    "json_class": "Chef::Node",
    "automatic": {
    },
    "run_list": [
       "recipe[zsh]",
       "role[webserver]"
    ],
    "chef_type": "node"
}

Я понял, я могу управлять этими данными на сервере с помощью ножа над редактором !!. И, похоже, есть опция командной строки для локального chef-client (скорее всего, -j JSON_ATTRIBS). => Но шеф-клиент работает локально, и мне нужно загрузить данные на сервер, а затем эти атрибуты узла нужно отправить клиенту. это единственное жизнеспособное решение в более крупной среде

Но как выгрузить эти данные ножом? Вроде нет для этого варианта? (только вариант с редактором в ноже вроде присутствует?)

Спасибо, Франсуа

В Chef авторитет - это узел. Лучше всего использовать нож чтобы настроить систему для запуска Chef и интегрировать ее с сервером Chef.

Большая часть данных атрибутов узла генерируется узлом динамически, когда шеф-клиент работает, где он использует ohai для получения информации о себе. Другие данные могут быть получены из поваренных книг и ролей. Ваш поваренные книги и роли обязательно должны храниться в вашем репозитории системы контроля версий, в том, что обычно называется Репозиторий шеф-повара.

Основная причина хранить узлы локально - это захват их списков выполнения. Мы рекомендуем иметь в своем репозитории документ Runbook (например, README :)), который описывает, какие у вас есть серверы и каковы их роли.

Сейчас я думаю о том, как отслеживать изменения узла run_list в репозитории. И единственное, что мне приходит в голову, - это создать роль для каждого узла с тем же именем, что и узел. Например:

  1. У нас есть 3 сервера с именами хостов: alpha, bob, charlie.
  2. В нашей папке ролей мы создаем 3 файла ролей: alpha.rb, bob.rb, charlie.rb
  3. Мы предоставляем имя, описание, run_list в каждом файле, как если бы это были обычные роли.
  4. Создайте run_lists для узлов, которые содержат только роль с соответствующим именем.

И всякий раз, когда нам нужно изменить run_list, мы меняем роль, и run_list остается прежним.