Форман с узлом 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 который должен сделать то же самое.

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