这适用于我在 Chef10 和 Chef11 中。实际上这个特性并没有被记录——至少,我不得不深入研究 Chef 源代码以找出如何传递 cookie。远程文件不支持这个。但是我们可以使用一些“隐藏”的 Chef 机制来为对特定域和端口的每个请求设置 cookie。
ruby_block "Prepare cookies for download from http://someurl" do
block do
Chef::REST::CookieJar.instance["someurl:80"] = "Some cookie"
end
end
remote_file "foo" do
source "http://someurl"
end
其中 ["someurl:80"] 应该是带有端口的整个域。例如,
Chef::REST::CookieJar.instance["download.oracle.com:80"] = Chef::REST::CookieJar.instance["edelivery.oracle.com:443"] = "oraclelicense=accept-securebackup-cookie"
这可用于从 oracle 站点下载 java,而无需手动接受许可协议。