предположим, что то, что вы описываете, является правильным способом сделать это (а это не так), обратите внимание, что вам нужно установить переменную среды на узле, где вы выполняете chef-client
.
chef-client
выполнение, имеет несколько фаз:
- фаза компиляции: все рецепты загружаются в порядке, указанном в расширенном рабочем списке.
- фаза конвергенции: Каждый ресурс выполняется в порядке, указанном в списке выполнения, а затем в порядке, в котором каждый ресурс указан в каждом рецепте.... каждое действие настраивает определенную часть системы.
для получения дополнительной информации о chef-клиенте об этой фазе см. обзор chef-клиента .
оценка вашей переменной среды, а именно ENV['SOME_ENV_VAR']
происходит на этапе компиляции.что вы действительно должны сделать, это использовать атрибут json :
, вы можете предоставить пользовательские атрибуты, включив --json-attributes
(я настоятельно советую вам посетитьдокументация, поскольку она содержит примеры) в chef-client
-j PATH, --json-attributes PATH
Путь к файлу, который содержит данные JSON.Используется для настройки первого запуска клиента.Для всех будущих запусков с параметром -i ожидается, что атрибуты будут сохраняться на chef-сервере.
вы всегда можете использовать переменные окружения, которые установлены для построения структуры json, а затемпередайте его шеф-клиенту при запуске.