По какой-то причине в моей организации мы не можем напрямую использовать полное доменное имя сервера Chef. Все запросы к нему следует перенаправлять. Следовательно, мы должны выполнить настройку ниже в файле /etc/opscode/chef-server.rb.
api_fqdn "<some_other_ip>"
Это работало нормально до тех пор, пока однажды на один из серверов Chef не удалось загрузить кулинарные книги, но все остальные команды ножа, такие как «Knife ssl check», «Knife ssl fetch» или «Knight Cookbook list», могли быть успешно запущены.
Проверил файл chef-server.rb и обнаружил две дополнительные строки.
bookshelf['vip'] = "https://<some_other_ip>:443"
bookshelf['external_url'] = "https://<some_other_ip>:443"
Книжная полка - это сервис, совместимый с Amazon Simple Storage Service (S3), используемый Chef для хранения кулинарных книг. Кто-то из разработчиков мог сделать это для экспериментов. Приведенное ниже исключение.
Uploading <some_cookbook> [0.10.12]
ERROR: Server returned error 500 for https://<some_other_ip>/organizations/cobalt/sandboxes/6d8079e5b8c3bfcbf24b9fcc88020bd2, retrying 1/5 in 3s
ERROR: Server returned error 500 for https://<some_other_ip>/organizations/cobalt/sandboxes/6d8079e5b8c3bfcbf24b9fcc88020bd2, retrying 2/5 in 8s
ERROR: Server returned error 500 for https://<some_other_ip/organizations/cobalt/sandboxes/6d8079e5b8c3bfcbf24b9fcc88020bd2, retrying 3/5 in 9s
ERROR: Server returned error 500 for https://<some_other_ip>/organizations/cobalt/sandboxes/6d8079e5b8c3bfcbf24b9fcc88020bd2, retrying 4/5 in 27s
ERROR: Server returned error 500 for https://<some_other_ip>/organizations/cobalt/sandboxes/6d8079e5b8c3bfcbf24b9fcc88020bd2, retrying 5/5 in 51s
ERROR: internal server error
Response: internal service error
Не уверен, как это может повлиять, поскольку настройки задокументированы на Повар и такие записи есть на Переполнение стека (см. также принятый ответ).
Серверы Chef (12.2) размещаются в соответствующих контейнерах докеров.
Дальнейшее расследование показало, что такие две дополнительные строки вызывали следующие настройки в /var/opt/opscode/opscode-erchef/etc/app.config на сервере Chef.
{s3_url, "https://<some_other_ip>"},
{s3_external_url, "https://<some_other_ip>:443"},
Это разные другие рабочие серверы Chef, где две строки
{s3_url, "https://782492f20c53"},
{s3_external_url, host_header},
где 782492f20c53 - это идентификатор контейнера докеров (служащий именем хоста внутри контейнера, найденный как 127.0.0.1 782492f20c53
в файле / etc / hosts).
Вдохновленный этим, изменил настройки URL-адреса книжной полки в файле chef-server.rb на проблемном сервере Chef, как показано ниже.
bookshelf['vip'] = "https://a0a994456729"
bookshelf['external_url'] = :host_header
Ран chef-server-ctl reconfigure
а затем кулинарная книга была успешно загружена.
Не уверен в основной причине, так как у меня нет опыта работы в сети. Думаю, это связано с маршрутизацией запросов, введенной с помощью контейнера докеров.