【发布时间】:2020-10-15 04:49:38
【问题描述】:
我正在尝试读取配方中的环境变量。
# recipes/default.rb
begin
tenant_name = ENV['TENANT_NAME']
...
end
但tenant_name 始终为空。我也尝试设置默认属性,但仍然是空值。我知道 json 输入数据有 -j 选项,但由于它将数据保存在 Chef 服务器上,我们不想使用该选项(这会破坏其他 CI/CD 流程)。
我该如何解决这个问题?为什么 ENV 变量为空?
在我运行 chef-client 命令的主机上有很多 ENV 变量,但在配方中打印 ENV.keys 只显示其中的几个。 Chef 是否有默认导入的 ENV 的许可名单/白名单?
【问题讨论】:
-
Chef 以 root 用户身份运行。确保为 Chef 运行的用户分配 env 变量。
-
感谢@DracoAter 的提示。我可以通过将 env 变量添加到 chef-client 命令来解决这个问题。