我有一个使用案例,其中一个厨师食谱需要使用'remote_file'来获取虚拟文件,并且需要通过HTTP代理来获取文件。 这是行不通的,因为厨师客户端不使用系统代理设置…它从/etc/chef/chef-client.rb获取其代理设置
那么如何将代理设置(或一般设置)置于客户端的chef-client.rb文件中?
理想情况下,我希望在客户端引导时发生,但是我看不到如何做黑客代码。
另一种可能是我可以创build一个更新chef-client.rb文件的配方。 但是这让我觉得有点危险。 这意味着您需要在运行chef-client之前运行两次,假设第一次运行时丢失的代理设置导致运行最终失败。
有想法该怎么解决这个吗?
Fyi:默认configuration文件是/etc/chef/client.rb ,你需要传递-c /etc/chef/chef-client.rb来使用这个文件。
要设置http代理的Chefconfiguration设置 ,您可以使用命令行选项--bootstrap-proxy URL将代理设置为与knife bootstrap配合使用。 或者,你可以在你的knife.rb添加这个。
knife[:bootstrap_proxy] = "https://proxy.example.com"
用您的代理服务器URLreplace“ https://proxy.example.com ”值。
这会自动将http_proxy和https_proxy行添加到/etc/chef/client.rb文件中。 或者,您可以在客户端configuration部分中使用这些configuration值创build一个定制的引导程序模板 。 像这样(从ubuntu10.04-gems.erb修改):
( cat <<'EOP' http_proxy "http://proxy.example.com" # replace with your URL <%= config_content %> EOP ) > /etc/chef/client.rb
遇到这个问题,当我试图让一个厨师独自运行防火墙的工作。
厨师客户端client.rb的相同http_proxy设置可以在solo.rb
所以厨师独奏会是这样的
solo.rb看起来像下面
cookbook_path File.expand_path("../cookbooks", __FILE__) json_attribs File.expand_path("../node.json", __FILE__) # HTTP for environment behind firewall # http://docs.opscode.com/config.html # solo.rb and client.rb can use the same http_proxy settings http_proxy "http://proxy.company.com:3128" # http_proxy_user "username" # http_proxy_pass "password"
主厨run => chef-solo -c solo.rb -j node.json -l debug`
有用! 😉
所以我有同样的问题,不能得到正确的工作,因为它似乎并没有工作在这种特殊的方式+缺乏文件样本。
最后我select编辑chef-full.erb这是引导默认模板用来生成client.rb
要得到正确的文件运行这个:
$ gem contents chef | grep bootstrap | grep full /home/henryt/.rvm/gems/ruby-1.9.3-p547/gems/chef-11.16.4/lib/chef/knife/bootstrap/chef-full.erb
然后在vim那个chef-full.erb文件中joinohai :disabled_plugins行里面的client.rb文件( cat > /etc/chef/client.rb <<'EOP' )
Ohai::Config[:disabled_plugins] = [:Passwd]
我的补丁文件:
--- ~me/.rvm/gems/ruby-1.9.3-p547/gems/chef-11.16.4/lib/chef/knife/bootstrap/chef-full.erb.orig 2016-07-22 00:53:33.689961205 -0700 +++ ~me/.rvm/gems/ruby-1.9.3-p547/gems/chef-11.16.4/lib/chef/knife/bootstrap/chef-full.erb 2016-07-22 00:44:21.253493396 -0700 @@ -64,6 +64,7 @@ cat > /etc/chef/client.rb <<'EOP' <%= config_content %> +Ohai::Config[:disabled_plugins] = [:Passwd] EOP cat > /etc/chef/first-boot.json <<'EOP'
现在,每次我引导一台机器client.rb得到生成与ohai :disabled_plugins行,我不必有一个自定义的client.rb文件。