У меня есть вариант использования, когда рецепт шеф-повара должен использовать «remote_file» для получения файла на виртуальном компьютере, а выборка должна выполняться через прокси-сервер HTTP. Это не работает, потому что chef-client не использует системные настройки прокси ... он получает свои настройки прокси из /etc/chef/chef-client.rb
Итак, как мне получить настройки прокси (или настройки в целом) в chef-client.rb
файл на клиенте?
В идеале я бы хотел, чтобы это произошло во время загрузки клиента, но я не понимаю, как это сделать, кроме взлома кода.
Другая возможность состоит в том, что я мог бы создать рецепт, который обновляет chef-client.rb
файл. Но это кажется мне немного опасным. А это означает, что вам нужно дважды запустить chef-client, прежде чем он заработает, предполагая, что отсутствующая настройка прокси-сервера при первом запуске приводит к окончательному сбою запуска.
Есть какие нибудь идеи как это починить?
Fyi: файл конфигурации по умолчанию /etc/chef/client.rb
, вам нужно будет пройти -c /etc/chef/chef-client.rb
использовать этот файл.
Чтобы установитьПараметры конфигурации Chef для HTTP-прокси, вы можете настроить прокси для использования с knife bootstrap
с параметром командной строки --bootstrap-proxy URL
. Или вы можете добавить это в свой knife.rb
.
knife[:bootstrap_proxy] = "https://proxy.example.com"
Заменить "https://proxy.example.com
"значение с URL вашего прокси-сервера.
Это добавит http_proxy
и https_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
Я столкнулся с этим вопросом, когда пытаюсь запустить соло Chef за брандмауэром.
Такой же http_proxy
настройки для клиента шеф-повара client.rb
может использоваться в 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`
Оно работает! ;-)
Таким образом, у меня была та же проблема, и я не мог получить подсказки для правильной работы, поскольку, похоже, это не работает именно таким образом + отсутствие образцов документации.
В конце концов я просто решил отредактировать 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
файл и добавить ohai :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
файл.