I have a use-case where a chef recipe needs to use 'remote_file' to fetch a file on a virtual, and the fetch needs to be do through an HTTP proxy. This is not working because chef-client doesn't use the system proxy settings ... it gets its proxy settings from the /etc/chef/chef-client.rb
So how do I get proxy settings (or settings in general) into the chef-client.rb
file on a client?
Ideally, I'd like it to happen at client bootstrap time, but I can't see how to do that short of hacking the code.
The other possibility is that I could create a recipe that updates the chef-client.rb
file. But that strikes me as a bit dangerous. And it means that you need to run chef-client twice before it works, assuming that the missing proxy setting in the first run causes the run to ultimately fail.
Any ideas on how to fix this?
Fyi: The default config file is
/etc/chef/client.rb
, you would need to pass-c /etc/chef/chef-client.rb
to use that file.To set theChef configuration settings for http proxy, you can set the proxy to use with
knife bootstrap
with the command-line option--bootstrap-proxy URL
. Or, you can add this in in yourknife.rb
.Replace the "
https://proxy.example.com
" value with your proxy server URL.This will add the
http_proxy
andhttps_proxy
lines to the/etc/chef/client.rb
file automatically. Alternatively, you can create a customized bootstrap template with these configuration values in the client config section. Something like this (modified from ubuntu10.04-gems.erb):Came across this question when I try to get a Chef solo run behind firewall work.
The same
http_proxy
settings for chef clientclient.rb
can be used insolo.rb
So the chef solo run will be like this
solo.rb looks like below
The chef run => chef-solo -c solo.rb -j node.json -l debug`
It works! ;-)
So I had the same issue and could not get hints to work properly as it doesn't seem to work in this particular way + lack of documenation samples.
In the end I just opted to edit the
chef-full.erb
which is the bootstrap default template use to generate theclient.rb
To get the right file run this:
Then
vim
thatchef-full.erb
file and addohai :disabled_plugins
line inside theclient.rb
here document (cat > /etc/chef/client.rb <<'EOP'
)My patch file:
Now every time I bootstrap a machine the
client.rb
gets generated with thatohai :disabled_plugins
line and I don't have to have a customclient.rb
file.