Chef infra chef客户端未获取环境变量值

Chef infra chef客户端未获取环境变量值,chef-infra,chef-client,Chef Infra,Chef Client,我试图阅读食谱中的环境变量 # recipes/default.rb begin tenant_name = ENV['TENANT_NAME'] ... end 但租户名称始终为空。我还尝试设置默认属性,但仍然是空值。我知道json输入数据有-j选项,但由于它在chef服务器上保存数据,所以我们不想使用该选项(这会破坏其他CI/CD流) 我怎样才能解决这个问题?为什么ENV变量为空 在我运行chef-client命令的主机上有很多ENV变量,但在recipe中打印ENV.keys只

我试图阅读食谱中的环境变量

# recipes/default.rb

begin
  tenant_name = ENV['TENANT_NAME']
  ...
end
但租户名称始终为空。我还尝试设置默认属性,但仍然是空值。我知道json输入数据有-j选项,但由于它在chef服务器上保存数据,所以我们不想使用该选项(这会破坏其他CI/CD流)

我怎样才能解决这个问题?为什么ENV变量为空


在我运行chef-client命令的主机上有很多ENV变量,但在recipe中打印ENV.keys只显示很少的变量。chef是否有默认导入环境的allowlist/whitelist?

正如@DracoAter所建议的,问题实际上是如何运行该命令。 由于chef client以root用户身份运行,因此主机上非root用户设置的环境变量对chef client命令不可见

作为修复程序,以这种方式运行命令可以克服此问题

sudo TENANT_NAME=tnt1 chef-client -o tenant_deploy ...

Chef以root用户身份运行。确保为用户Chef运行分配了env变量。谢谢@DracoAter的提示。我可以通过向chef-client命令添加env变量来解决这个问题。