Как автоматизировать назначение узлов средам?

Вы можете назначать узлы средам при начальной загрузке, но у меня уже есть куча рабочих узлов, находящихся в _default.

Я мог бы использовать нож, чтобы просто назначить их другим средам, или я думал о том, чтобы иметь роль для каждой среды, в которой есть рецепт, который запускает chef-client:: config и устанавливает атрибут среды, тогда я мог бы просто назначить узлы нужной среде. роль. Проблема с использованием роли, я думаю, будет заключаться в дополнительных обручах, через которые мне придется прыгать, чтобы подключить вещи на тестовой кухне.

Как шеф-повара обычно решают эту проблему?


person red888    schedule 23.09.2016    source источник


Ответы (1)


Правильное место для начала — knife exec со сценарием преобразования.

Это, вероятно, должно помочь вам начать:

knife exec -E 'nodes.transform("roles:foo") {|n| n.chef_environment = "foo" }'

Аргументом является поисковый запрос (вы также можете использовать "*:*" для захвата всех узлов), а затем что-то делать с каждым объектом узла в блоке. Если возвращаемое значение блока равно true-y, он сохраняется, если false-y — нет.

person coderanger    schedule 24.09.2016
comment
Вы когда-нибудь назначали среды узлам с помощью поваренной книги Chef-Client? В книге Learning Chef упоминается этот метод, но я не понимаю его преимуществ перед простым использованием ножа. - person red888; 26.09.2016
comment
Книгу не читал, поэтому надо уточнить. Как правило, в поваренной книге шеф-клиента записываются данные в конфигурацию client.rb, что очень-очень не рекомендуется, поскольку оно будет постоянно переопределять информацию с сервера Chef. - person coderanger; 27.09.2016