Мои узлы вообще не имеют доступа в Интернет. У нас нет разрешения на создание местного зеркала драгоценных камней. Все драгоценные камни должны устанавливаться с сервера Chef.
Теперь, когда Chef запускается, он вызывает установку пакета (chef / lib / chef / cookbook / gem_installer.rb - L51) без параметров.
Как нам остановить запуск сборщика или принудительно запустить его в локальную или автономную установку, чтобы он не инициировал выходное соединение? (установка из локального каталога - это нормально, если мы можем принудительно установить его для каждого камня в другое место)
Кто-нибудь еще запускает это в строгой корпоративной среде с сильными брандмауэрами и правилами продвижения программного обеспечения? Боюсь, что повару это сложно.
Это, похоже, не помогло, но у меня может быть неправильное содержимое dir (просто жемчужина):
/opt/chef/embedded/bin/bundle \
config \
local.chef-vault /var/chef/cache/cookbooks/gem-chef-vault/files/default/
Ладно. Таким образом, проверка подмодулей в файлах может работать:
cd ~/chef-repo
git submodule add \
https://github.com/chef/chef-vault.git \
local-cookbooks/gem-chef-vault/files/default/chef-vault
обратите внимание, что, поскольку шеф-повар присоединится ко всем каталогам кулинарных книг, ваша ссылка в сборщике по-прежнему ... / cookbooks / ....
Хм. Сложно изменить /root/.bundle/config до начала загрузки гема. Это, например, не победа в гонке:
template /root/.bundle/config do
action :nothing
end.run_action(:create)
боббитная процедура в [Строке 49] (https://github.com/chef/chef/blob/master/lib/chef/cookbook/gem_installer.rb#L49) (|| true) отключает захват драгоценного камня, но затем мы возвращаемся к ошибке, когда включенная сторонняя поваренная книга 'требует' (еще не установленного) драгоценного камня во время компиляции - и r = / r.run_action (: install) бит, похоже, еще не запускается ... именно там, где я думаю, он должен был.
даже если бы я мог зажечь дешевый пустой репозиторий с драгоценностями на коробке шеф-повара:
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-адрес не имеет значения.
наша текущая стратегия, если мы по-прежнему будем работать с шеф-поваром на предприятии, выглядит следующим образом:
##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 но не полностью, или проблема с докером 682 или Chef-vault, выпуск 61 и 63: наша проблема в том, что все это происходит автократически, когда считывается строка 'gem' в metadata.rb.
Вы можете использовать rubygems_url
config, чтобы нацеливаться на локальное зеркало, или просто не используйте кулинарные книги, которые используют эту функцию, и она не должна активироваться вообще.
Самый выигрышный ответ, кажется, соответствует №5. Вам нужно будет создать зеркало драгоценных камней и управлять им, а также ввести локальный URL-адрес одним из двух способов.
МОЖЕТ БЫТЬ загрузкой местоположения в .gemrc и .bundle / config будет работать (не подтверждено напрямую), как в № 3, но не пытайтесь использовать на нем постамбль run_action, потому что оператор gem является первым. это избавит от необходимости указывать бит отмены в растущей и опасной командной строке (сделайте это как можно скорее, поскольку автоматизация может снизить риск опечаток). Что касается действительного, но пустого «репо» драгоценного камня для URL-адреса, чтобы остановить этот процесс, я не смог подтвердить, что вопрос был понят.
№6, вероятно, не сработает. МОЖЕТ БЫТЬ, даже если вы убьете код в пакете chef или отключите его с помощью действительного, но пустого репозитория гемов.
Да, это угрожает Единому Источнику Истины. Да, вам нужно настроить больше снаряжения. Да, вам нужно поддерживать его. Да, может сработать. Других идей нет.
Помните, в конце концов, что «это на вас». Я хотел бы поблагодарить Шона Спайсера за помощь в экономии $ 137 на узел в год. : - /