шеф-клиент не получает значение переменной ENV
Я пытаюсь читать переменные среды в рецептах.
# recipes/default.rb
begin
tenant_name = ENV['TENANT_NAME']
...
end
Но tenant_name всегда пусто. Я также попытался установить атрибуты по умолчанию, но все еще пустое значение. Я знаю, что для входных данных json есть опция -j, но поскольку она сохраняет данные на сервере chef, мы не хотим использовать эту опцию (которая нарушает другой поток CI/CD).
Как я могу это исправить? Почему переменная ENV пуста?
На хосте, на котором я запускаю команду chef-client, есть много переменных ENV, но печать ENV.keys внутри рецепта показывает только некоторые из них. Есть ли у шеф-повара список разрешений / белый список для импортируемых ENV по умолчанию?
1 ответ
Как предположил @DracoAter, проблема действительно в том, как выполняется команда. Поскольку chef-client работает от имени пользователя root, переменная среды, установленная пользователем без полномочий root на хосте, не была видна команде chef-client.
В качестве команды запуска исправления этот способ решает проблему,
sudo TENANT_NAME=tnt1 chef-client -o tenant_deploy ...