Форман с узлом Puppet Net::HTTPNotFound Ошибка
Я установил foreman (v1.9.0) на виртуальной машине RHEL 7.1 согласно официальной документации.
Моя текущая среда состоит из:
- 1 х Кукольный мастер / бригадир
- 2 агента (RHEL 6,5 и 7)
Мастер настроен как ENC, который будет обслуживать 9 сред (включая производство). Умный прокси был настроен в мастере для мастера / мастера кукол.
Не было никаких проблем с агентами в создании CSR и получении его подписанным марионеточным мастером.
Когда я запускаю агент puppet на удаленном компьютере с командой
puppet agent --no-daemonize --server <FQDN> --trace
Я получаю следующие ошибки
Предупреждение: невозможно получить определение моего узла, но агент продолжит:
Предупреждение: ошибка 400 на сервере SERVER: не удалось найти <полное доменное имя агента> через exec: выполнение /etc/puppet/node.rb <полное доменное имя агента> вернуло 1:
Выполнение указанной команды на хозяине кукол
sudo -u puppet /etc/puppet/node.rb <agent FQDN>
Возвращает ошибку:
Ошибка при получении узла <полное доменное имя агента> Net::HTTPNotFound
Проверьте Формана /var/log/foreman/production.log для получения дополнительной информации.
Изучение этой ошибки в Интернете " Мастер с ошибкой 404 Not Found " в разделе "Puppet node.rb " дает стандартный ответ мастера марионеток (DNS, /etc/hosts) об агенте. В моем случае это не проблема, поскольку выполнение одной и той же команды node.rb для puppetmaster возвращает ту же ошибку. Простой тест ping подтверждает, что DNS правильно настроен.
В этом случае нет никаких журналов, созданных в /var/log/foreman/production.log (inc debug), хотя в файле /var/log/httpd/foreman-ssl_access_ssl.log сгенерирована ошибка http 404
- - [30/Sep/2015:15:13:29 +1000] GET / узел / ? Format = yml HTTP / 1.1 "404 48" - "" Ruby "
node.rb ссылается на foreman.yaml, что правильно в отношении перечисленных записей, которые я могу подтвердить, например:
- : URL:
- : Ssl_ca:
- : Ssl_cert:
- : Ssl_key:
- так далее
Это также файл по умолчанию, созданный процессом установки без изменений.
Агенты находятся в мастере, но чтобы добиться этого, настроив puppet.conf и сгенерировав / подписав сертификаты агента, я выполнил команду
puppet agent -t <puppet master FQDN>
агенты не были импортированы в мастера, пока я не запустил команду вручную
foreman-rake puppet:import:hosts_and_facts
вызов одного из хостов в мастере и затем нажатие на "YAML" показывает правильную информацию для каждого агента.
Я даже вытащил информацию из сертификатов, используя openssl, чтобы подтвердить, что они верны.
ОБНОВИТЬ:
Я выполнил команду
curl -k https://< Puppet Master FQDN>/foreman
Это возвращает результат
<html><body>You are being <a href="https://< Puppet Master FQDN>/foreman/users/login">redirected</a>.</body></html>
Это создает запись журнала в ~ / foreman / production.log
2015-10-01 10:04:57 [app] [I] | | Начал GET "/foreman/" для
в 2015-10-01 10:04:57 +1000 2015-10-01 10:04:57 [app] [I] Обработка DashboardController # index as / 2015 -10-01 10:04:57 [app] [I] Перенаправлено на https: // <МАСТЕР КУКЛЫ> /foreman/users/login 2015-10-01 10:04:57 [app] [I] Цепочка фильтров остановлена as:require_login отображается или перенаправляется 2015-10-01 10:04:57 [app] [I] Завершено 302 Найдено за 7 мс (Активная запись: 0,6 мс)
В то время как в ~/httpd/foreman-ssl_access_ssl.log я получаю это
- - [01/Oct/2015:10:05:26 +1000] "GET /foreman/ HTTP/1.1" 302 129 "-" "curl/7.29.0"
Другие соответствующие записи журнала в том же журнале будут
- - [01/Oct/2015:09:53:28 +1000] "POST /api/hosts/ Факты /HTTP/1.1" 404 27 "-" "Рубин"
- - [01/Oct/2015:09:53:28 +1000] "GET / узел / ? Format=yml HTTP/1.1" 404 52 "-" "Ruby"
Итак, вопрос, который нужно задать, - что я могу сделать с конфигурацией HTTP Puppet / Foreman, чтобы устранить ошибки 404
1 ответ
Похоже, что скрипт ENC запрашивает пути в корне веб-сервера (/ api), а сам Foreman размещен на подчиненном URI (/foreman/). Это должно быть удар /foreman/api/hosts/facts
, /foreman/node/
и т.д., именно поэтому Apache возвращает 404, но Форман не видит и не регистрирует запрос.
Вы можете изменить URL-адрес, используемый node.rb в /etc/puppet/foreman.yaml, через :url:
установка. Добавить /foreman
суффикс здесь.
В качестве альтернативы, если вы использовали установщик Foreman, вы можете перезапустить его с --puppet-server-foreman-url=https://example.com/foreman
который должен сделать то же самое.