Chef: чтение значения атрибута из переменных среды оболочки - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь прочитать значение переменной окружения в файле атрибутов поваренной книги шеф-повара.Многие посты описывают, что я могу использовать ENV [] ruby ​​для достижения того, чего я хочу.

Мой файл атрибутов выглядит примерно так

default['some_object']['some_attribute'] = ENV['SOME_ENV_VAR']

При запуске рецепта, похоже, получается пустая строка.Есть указатели?

1 Ответ

1 голос
/ 10 марта 2019

предположим, что то, что вы описываете, является правильным способом сделать это (а это не так), обратите внимание, что вам нужно установить переменную среды на узле, где вы выполняете chef-client.

chef-client выполнение, имеет несколько фаз:

  • фаза компиляции: все рецепты загружаются в порядке, указанном в расширенном рабочем списке.
  • фаза конвергенции: Каждый ресурс выполняется в порядке, указанном в списке выполнения, а затем в порядке, в котором каждый ресурс указан в каждом рецепте.... каждое действие настраивает определенную часть системы.

для получения дополнительной информации о chef-клиенте об этой фазе см. обзор chef-клиента .

оценка вашей переменной среды, а именно ENV['SOME_ENV_VAR'] происходит на этапе компиляции.что вы действительно должны сделать, это использовать атрибут json :

, вы можете предоставить пользовательские атрибуты, включив --json-attributes (я настоятельно советую вам посетитьдокументация, поскольку она содержит примеры) в chef-client

-j PATH, --json-attributes PATH Путь к файлу, который содержит данные JSON.Используется для настройки первого запуска клиента.Для всех будущих запусков с параметром -i ожидается, что атрибуты будут сохраняться на chef-сервере.

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

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