Назад | Перейти на главную страницу

Установка свойств в chef-client.rb

У меня есть вариант использования, когда рецепт шеф-повара должен использовать «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 файл.