вызвать переменную/атрибуты шеф-повара в рецепте, который определен в файле среды

Я пытаюсь определить где-то переменную (возможно, в файле среды) и использовать/вызывать ее в своем рецепте, чтобы я мог получить ее значение, и если я изменю файл среды (определив одну и ту же переменную с другим значением), тогда я можно использовать один и тот же рецепт с разными значениями переменных (определяется в среде)

может ли кто-нибудь помочь мне понять, как определить переменную/атрибуты в среде, а затем как вызвать ее в файле рецепта

Я попытался определить атрибуты в файле среды, как показано ниже.

"DB_IP":"xx.xx.xx.XX","BOX_NAME":"AIX2Wd4109",

и попытался вызвать по рецепту, как показано ниже

BOX_NAME = json['defaults']['BOX_NAME']
DB_IP = json['defaults']['DB_IP']

но при выполнении команды knife значения не подбираются, получая ошибку, как показано ниже

Chef Client failed. 0 resources updated in 5.975572324 seconds←[0m
[2016-01-19T13:15:57+00:00] ERROR: uninitialized constant Chef::Recipe::BOX_NAME

person Saurabh Suman    schedule 19.01.2016    source источник
comment
Добро пожаловать в stackoverflow.com. Эти переменные называются атрибутами. Вы можете получить к ним доступ в рецепте, используя node['attribute_name'] или node[:attribute_name]. Ваш файл среды не такой, как должен выглядеть файл среды. Я предлагаю подписаться на learn.chef.io, чтобы начать.   -  person StephenKing    schedule 19.01.2016


Ответы (1)


Чтобы повторить приведенный выше комментарий, который действительно является ответом:

Способ доступа к этим атрибутам узла — node['DB_IP'] и node['BOX_NAME'].

Я также согласен с тем, что перед тем, как продолжить, вам следует просмотреть учебник Learn Chef, в котором рассматриваются основы работы с Chef.

person coderanger    schedule 19.01.2016