[英]Puppet, wget and proxy
我正在嘗試在發出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語句中導出變量:
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插件使用頂級范圍變量搜索代理設置。 因此,訣竅是在頂級作用域中定義這些變量,即在節點定義之前。 完整的工作代碼:
$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",
...會失敗,因為(a) export
是一個shell內置命令,所以Puppet將無法exec
它,因為沒有相應的二進制文件......和(b)即使它可以,它也不會做你想做的事,因為設置這樣的環境變量不是持久的 - 它只會影響當前進程及其子進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.