我正在尝试使用第三方木偶模块,该模块依赖于将运行的木偶代理正确设置JAVA_HOME的事实。
JAVA_HOME是必需的,因为在提供程序中定义了一个命令(请参阅here)。
我现在可以使用2个选项:
我的问题是:是否可以将环境传递给提供商?
可能的解决方案
从以下post
中获取灵感我为它创建了一个新类型和一个提供者,里面设置了ENV [myvar] = myvalue。请注意,该类型不可保证。 变量将“泄漏”并允许依赖它的其他模块正常工作。
E.g。
### ... Provider code
def ensure
if value = ENV[resource[:name]]
value
else
:absent
end
end
def ensure=(new_value)
if new_value == :absent
ENV.delete(resource[:name])
else
ENV[resource[:name]] = new_value
end
end
### Usage in puppet code
mytype { 'MYVAR':
ensure => 'MYVAL',
}
请注意,puppet会在每次运行时报告值已从缺席值更改为特定值。为了避免这种情况,我认为总是回归是足够的:缺席(我必须验证)。
答案 0 :(得分:1)
是否可以将环境传递给提供者?
不,Puppet没有为每个提供商自定义外部命令环境的机制。不过,我认为你有比你所列举的更多的选择。其中:
将remove
命令包装在设置所需环境变量的shell脚本中
如果您确实使用puppet
来安排代理运行,请使用 cron
的内置支持来设置环境变量命令它运行。
后者似乎是一个很有前途的选择。