在 Chef-client.rb 中设置属性

Ste*_*n C 4 chef

我有一个用例,其中厨师食谱需要使用“remote_file”来获取虚拟文件,并且需要通过 HTTP 代理进行获取。这是行不通的,因为厨师客户端不使用系统代理设置......它从/etc/chef/chef-client.rb

那么如何将代理设置(或一般设置)放入chef-client.rb客户端的文件中?

理想情况下,我希望它在客户端引导时发生,但我不知道如何做到这一点,除非破解代码。

另一种可能性是我可以创建一个更新chef-client.rb文件的配方。但这让我觉得有点危险。这意味着您需要在运行前运行 Chef-client 两次,假设第一次运行中缺少的代理设置导致运行最终失败。

有想法该怎么解决这个吗?

jti*_*man 5

仅供参考:默认配置文件是/etc/chef/client.rb,您需要传递-c /etc/chef/chef-client.rb才能使用该文件。

为 http proxy 设置 Chef 配置设置,您可以设置要knife bootstrap与命令行选项一起使用的代理--bootstrap-proxy URL。或者,您可以将其添加到您的knife.rb.

knife[:bootstrap_proxy] = "https://proxy.example.com"
Run Code Online (Sandbox Code Playgroud)

将“ https://proxy.example.com”值替换为您的代理服务器 URL。

这将自动将http_proxyhttps_proxy行添加到/etc/chef/client.rb文件中。或者,您可以使用客户端配置部分中的这些配置值创建自定义引导程序模板。像这样(从 ubuntu10.04-gems.erb 修改):

(
cat <<'EOP'
http_proxy "http://proxy.example.com" # replace with your URL
<%= config_content %>
EOP
) > /etc/chef/client.rb
Run Code Online (Sandbox Code Playgroud)