Рабочий процесс шеф-повара завершается сбоем на этапе проверки, когда в кулинарной книге есть зависимости

Я использую часть рабочего процесса Chef Automate для доставки кулинарных книг на мой сервер Chef. Я успешно загрузил 2 поваренные книги на сервер Chef через конвейер.

На сервере Chef:
apache версии 0.2.3
another_test версии 0.1.1

Я хотел внести изменения в apache, чтобы они зависели от другого_теста, поэтому я обновил метаданные для apache и поднял версию до 0.2.4.

Файл метаданных для apache имеет depends 'another_test', а another_test не имеет зависимостей.

Файл Berksfile для apache есть

source :chef_server
source 'https://supermarket.chef.io'
metadata

Когда я делаю вызов для проверки доставки, конвейер запускается, но я получаю сбой на этапе модульного тестирования этапа проверки.

execute[unit_rspec_apache] action run

================================================== ===============================
Ошибка выполнения действия `run` над ресурсом 'execute[unit_rspec_apache]' === ================================================== ===========================
Mixlib::ShellOut::ShellCommandFailed
---------- --------------------------
Ожидается завершение процесса с [0], но получено '1'
---- Начать вывод rspec --format document --color ----
STDOUT: [2017-11-21T14:06:57+00:00] ОШИБКА: соединение отказало в подключении к https://localhost/universe, повторите попытку 1/5
[2017-11-21T14:07:02+00:00] ОШИБКА: соединение отказало в соединении на https://localhost/universe, повторите попытку 2/5
[2017-11-21T14:07:07 +00:00] ОШИБКА: соединение отказало в подключении к https://localhost/universe, повторите попытку 5 марта
[2017-11-21T14:07:12+00:00] ОШИБКА: соединение отказало в подключении к https://localhost/universe, повторите попытку 5/4
[2017-11-21T14:07:17+00:00] ОШИБКА: соединение отказало в подключении к https://localhost/universe, повторите попытку 5/5

Произошла ошибка в хуке `before(:suite)`. Сбой/ошибка: поднять NoSolutionError.new(требования, e)

Berkshelf::NoSolutionError: Невозможно выполнить ограничения для несуществующего пакета Another_test из-за ограничения решения (apache = 0.2.4). Ограничения решения, которые могут привести к ограничению other_test: [(apache = 0.2.4) -> (another_test >= 0.0.0)]
Отсутствующие артефакты: Another_test
Требование, которое невозможно удовлетворить: (apache = 0.2 .4)
Не удалось найти решение для требований: apache (0.2.4)

Из-за этого сбоя новая версия apache 0.2.4 никогда не загружается на сервер Chef.

РЕДАКТИРОВАТЬ: я протестировал использование зависимости от супермаркета, и он проходит этап проверки. Итак, у меня было depends 'java' в apache, и оно загружается нормально. Проблема начинается, когда я полагаюсь на кулинарную книгу, которая приходит с моего сервера шеф-повара.

РЕДАКТИРОВАТЬ 2: я могу войти в бегун и сделать knife cookbook list. Это доказывает мне, что раннер может получить доступ к серверу шеф-повара и посмотреть, какие кулинарные книги там существуют. Я также попытался изменить файл Berksfile для apache, чтобы вместо source :chef_server было source 'https://<full-url-to-chef-server/organizations/myorg'.


person James    schedule 21.11.2017    source источник
comment
Не используя Workflow, я не хочу публиковать это как ответ, но похоже, что источник :chef_server в Berks дает сбой, потому что Workflow не знает о вашем сервере Chef (по крайней мере, на этом этапе). Как вы ожидаете, что он настроит конфигурацию knife.rb?   -  person coderanger    schedule 21.11.2017
comment
Ну, это работает на узле 'runner', у которого уже настроен собственный knife.rb. Этот файл ножа знает о моем сервере шеф-повара.   -  person James    schedule 21.11.2017
comment
Похоже, вы что-то напутали, knife.rb для бегуна не знает, что такое URL-адрес chef_server.   -  person James    schedule 21.11.2017
comment
Действительно, к сожалению, по историческим причинам URL по умолчанию — localhost.   -  person coderanger    schedule 21.11.2017
comment
(хотя вы также можете видеть, что это происходит при использовании локального большинства, потому что это повторно указывает на волшебный внутренний сервер на локальном хосте)   -  person coderanger    schedule 21.11.2017
comment
В файле /etc/chef/client.rb на бегуне указан chef_server_url правильно. Я могу сделать список кулинарных книг sudo knife из бегуна и посмотреть все кулинарные книги на сервере шеф-повара.   -  person James    schedule 22.11.2017


Ответы (1)


Мне пришлось отредактировать файл /var/opt/delivery/workspace/.chef/knife.rb на узле бегуна. Я добавил эту строку внизу файла: chef_server_url 'https://chef-server/organizations/myorg'.

Этот файл конфигурации ножа используется пользователем dbuild на узле бегуна. Он читает этот файл, чтобы определить URL-адрес сервера шеф-повара.

person James    schedule 21.11.2017
comment
Это странно, потому что chef_server_url уже должно было быть правильно заполнено командой automate-ctl install-runner. - person Tricky; 24.11.2017