Шеф-повар 13 и блокирование сетевых запросов

Мои узлы не имеют доступа в Интернет вообще. У нас нет разрешения на создание локального зеркала драгоценных камней. Все гемы должны быть установлены с сервера chef.

Теперь, когда запускается chef, он вызывает "установку комплектов" (chef/lib/chef/cookbook/gem_installer.rb - L51) без параметров.

Как нам убить запуск компоновщика или принудительно установить его в локальную или автономную настройку, чтобы он не инициировал соединение? (установка из локального каталога в порядке, если мы можем принудительно установить его в другом месте)

Кто-нибудь еще запускал это в строгих корпоративных условиях с сильными брандмауэрами и правилами продвижения программного обеспечения? Я волнуюсь, что это сложно для шеф-повара.

  1. Похоже, это не помогло, но я могу неправильно указать содержимое каталога (просто драгоценный камень):

    /opt/chef/embedded/bin/bundle \ config \ local.chef-vault /var/chef/cache/cookbooks/gem-chef-vault/files/default/

  2. Хорошо. Таким образом, проверка субмодулей в файлах может работать:

    cd ~/chef-repo git submodule add \ https://github.com/chef/chef-vault.git \ local-cookbooks/gem-chef-vault/files/default/chef-vault

    Обратите внимание, что поскольку шеф-повар присоединится ко всем каталогам поваренной книги, ваша ссылка в bundler по-прежнему... / cookbooks /....

  3. Хм. Сложно изменить /root/.bundle/config до начала загрузки гема. Это, например, не победа в гонке:

    template /root/.bundle/config do action :nothing end.run_action(:create)

  4. Боббит рутины в [Строка 49] ( https://github.com/chef/chef/blob/master/lib/chef/cookbook/gem_installer.rb#L49) (|| true) отключает захват гемов, но затем мы возвращаемся к ошибке, когда включенная сторонняя кулинарная книга "требует" (еще не установлен) гем во время компиляции, а бит r=/r.run_action(:install), похоже, еще не запускается.. именно там, где я думаю, это должно было быть.

  5. даже если бы я мог осветить дешевое пустое хранилище драгоценных камней на коробке шеф-повара:

    mkdir -p /var/opt/opscode/nginx/html/repo/gems /opt/opscode/embedded/bin/gem \ generate_index \ -d /var/opt/opscode/nginx/html/repo/

    :::::::::::::: /var/opt/opscode/nginx/etc/addon.d/99-gem-mirror_external.conf :::::::::::::: location "/repo/" { } (перезапустите с chef-server-ctl restart)

    .... и укажите узлы в этом месте

    knife ssh 'name:victim2' -- \ chef-client --config-option 'rubygems_url=http://chef/repo/'

    он все еще умирает - при 'требует', так что я думаю, что URL не имеет значения.

  6. наша текущая стратегия, если мы до сих пор работаем с chef на предприятии, - это код, подобный следующему:

    ##3p_something::default.rb: chef_gem 'something' do # install in compile source '/some/local/file.gem' clear_sources true compile_time true include_default_source false action :nothing end.run__action (:install) # include_recipe 'something'

    В идеале мы хотим предварительно собрать необходимый драгоценный камень до того, как включенный рецепт вслепую захватывает что-то из Интернета, поэтому мы получаем что-то проверяемое, последовательное и повторяемое (конечно, и обновление file.gem - это еще одно усилие, которое мы принимаем в этом отношении).

Кажется, это похоже на проблемы 3456 chef, но не полностью, или проблему 682 docker, или проблему 61 и 63 chef-vault: наша проблема в том, что все это происходит самовольно, когда читается строка "gem" в metadata.rb.

2 ответа

Вы можете использовать rubygems_url настройка config для нацеливания на локальное зеркало, или просто не используйте кулинарные книги, в которых используется эта функция, и она вообще не должна активироваться.

Лучший ответ, кажется, что-то соответствует #5. Вам нужно будет создать зеркало для драгоценных камней и управлять им, а также вводить локальный URL-адрес одним из двух способов.

Может быть, начальная загрузка местоположения в.gemrc и.bundle/config будет работать (не подтверждено напрямую), как в #3, но не пытайтесь использовать на нем пост-символ run_action, потому что оператор gem является первым. это исключило бы необходимость предоставления бита переопределения в растущей и пагубной командной строке (сделайте это в ближайшее время, поскольку автоматизация может снизить риск опечаток). Что касается действительного, но пустого гема "репо" для URL, чтобы остановить этот процесс, я не смог подтвердить, что вопрос был понят.

# 6, вероятно, не будет работать. МОЖЕТ БЫТЬ, даже если вы убьете код в пакете chef или отключите его с помощью действительного, но пустого хранилища гемов.

Да, это угрожает Единому Источнику Истины. Да, вам нужно настроить больше снаряжения. Да, вам нужно поддерживать это. Да, это может сработать. Других идей не представлено.

В конце концов, помните, что "это на вас". Я хотел бы поблагодарить Шона Спайсера за помощь в экономии 137 долларов США / узел / год.:-/

Другие вопросы по тегам