在厨师食谱中分配环境变量的最佳方法是什么?

时间:2016-01-15 07:16:57

标签: ruby-on-rails ruby chef chef-recipe chef-solo

我想在厨师食谱中分配一个系统变量 我使用以下代码:

env 'DEF_ADDR' do
  value "http://#{node['ipaddress']}"
end  

但是,我在执行配方时遇到以下错误

  

错误:无法在redhat版本6.6上找到env的资源

2 个答案:

答案 0 :(得分:1)

在Unix上设置全局环境变量没有一致的方法。一些发行版通过诸如/etc/profile.d之类的东西支持全局级shell包括,但这对于在shell之外运行的事情没有影响,例如直接SSH执行或作为服务运行。

答案 1 :(得分:0)

find_package似乎仅适用于Windows环境:

  

使用env资源管理Microsoft Windows中的环境密钥。

如果只想为Chef Run定义环境变量,可以使用Ruby:

ENV['DEF_ADDR'] = "http://#{node['ipaddress']}"

但这只能在Chef Run期间访问。

如果您想定义一个系统范围的环境变量,那么env resource食谱可能会帮助您:

node.default['etc_environment']['DEF_ADDR'] = "http://#{node['ipaddress']}"