木偶,wget和代理

我正在尝试在发出wget调用之前设置代理

file { "/etc/environment": content => inline_template(" http_proxy=http://10.0.12.13:8080 https_proxy=http://10.0.12.13:8080") } 

问题是我必须重新启动Puppet会话才能正确加载环境。

我也试图在exec语句中导出variables:

 exec { "proxy-export-vars": provider => "shell", command => "export http_proxy=http://10.0.12.13:8080 && export https_proxy=http://10.0.12.13:8080", } 

问题是 – 如何加载环境设置而不重新启动会话和木偶申请过程?

更新

WGET puppet插件使用search代理设置的顶级范围variables 。 所以诀窍就是在顶层作用域中定义这些variables,即在节点定义之前。 完整的工作代码:

 $http_proxy = "http://10.0.12.13:8080" $https_proxy = "http://10.0.12.13:8080" node 'machine' { # ... } 

从现在开始, WGET puppet插件将使用这些代理设置来获取资源。

为单个exec资源设置环境变量的最简单方法是使用environment属性。 请参阅这里的文档。 例如:

 exec {'fetch something': environment => [ 'http_proxy=http://10.0.12.13:8080', 'https_proxy=http://10.0.12.13:8080', ], command => '/usr/bin/wget -o /tmp/myfile http://myserver/myfile', } 

你的第二次尝试…

 exec { "proxy-export-vars": provider => "shell", command => "export http_proxy=http://10.0.12.13:8080 && export https_proxy=http://10.0.12.13:8080", 

…会失败,因为(一) export是一个shell内置的命令,所以木偶将无法exec它,因为没有相应的二进制…和(b)即使它可以,它不会做你想做的事情,因为设置一个像这样的环境变量不是持久的 – 它只影响当前进程及其子进程。