在 Puppet exec 下载中设置代理环境
在运行 Wget 的 exec 资源上设置环境值,并用成品文件守卫控制下载。
Puppet 的 exec 资源有一个 environment 属性。把代理值放在调用下载器的资源上:
file { '/var/cache/myapp':
ensure => directory,
}
exec { 'fetch-artifact':
provider => shell,
command => '/usr/bin/wget --tries=1 --timeout=20 -O /var/cache/myapp/artifact.part https://downloads.example.net/artifact-v1.bin && /usr/bin/mv /var/cache/myapp/artifact.part /var/cache/myapp/artifact-v1.bin',
environment => [
'http_proxy=http://proxy.example.net:8080',
'https_proxy=http://proxy.example.net:8080',
],
creates => '/var/cache/myapp/artifact-v1.bin',
require => File['/var/cache/myapp'],
}
示例假定 Wget 和 mv 位于这些路径。传输失败会留下临时路径名;只有 Wget 成功后才会安装最终路径名。随后,只要已完成的带版本文件存在,creates 守卫就会跳过后续执行。
当 Puppet 运行此命令时,环境数组提供这些值。当 Wget 没有已配置或保留的代理凭据时,HTTP 代理列表中的 HTTP 条目可以为获准的公共制品下载提供代理 URL。由另一个 exec 资源执行的导出只在那个进程及其子进程中有效。对两个资源排序并不会让第一个的 shell 环境延续到第二个。
把这个资源的环境保留在该资源上。其他 Puppet 操作可以使用各自配置的路径,而无需更改机器范围的 Wget 启动文件。