【发布时间】:2015-12-27 19:42:54
【问题描述】:
我已经按照官方文档在 RHEL 7.1 VM 上安装了 foreman (v1.9.0)。
我目前的环境包括:
- 1 x 木偶大师/工头
- 2 个代理(RHEL 6.5 和 7)
Foreman 被配置为 ENC,它将服务于 9 个环境(包括生产环境)。 已在工头中为工头/puppetmaster 配置了智能代理。
代理在生成 CSR 并让 puppet master 签名方面没有问题。
当我使用命令在远程机器上运行 puppet 代理时
puppet agent --no-daemonize --server <FQDN> --trace
我收到以下错误
警告:无法获取我的节点定义,但代理将继续:
警告:服务器上的错误 400:无法通过 exec 找到
:执行“/etc/puppet/node.rb ”返回 1:
在 puppet master 上运行引用的命令
sudo -u puppet /etc/puppet/node.rb <agent FQDN>
返回错误:
检索节点时出错
Net::HTTPNotFound 查看 Foreman 的 /var/log/foreman/production.log 了解更多信息。
在网络上研究这个错误 "Foreman with puppet node.rb error 404 Not Found" 提供不知道代理的 puppet master 的标准响应(DNS、/etc/hosts)。 在我的情况下,这不是问题,因为对 puppetmaster 运行相同的 node.rb 命令会返回相同的错误。一个简单的 ping 测试确认 DNS 设置正确。
虽然在 /var/log/httpd/foreman-ssl_access_ssl.log 中生成了 http 404 错误,但失败时在 /var/log/foreman/production.log(inc 调试)中没有生成日志
- - [30/Sep/2015:15:13:29 +1000] GET /node/ ?format=yml HTTP/1.1" 404 48 "-" "Ruby"
node.rb 引用了 foreman.yaml,这对于我可以确认的所列条目是正确的:
- :网址:
- :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 [应用] [我] | |在 2015-10-01 10:04:57 +1000 为 发起 GET "/foreman/" 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] 过滤器链停止为:require_login 呈现或重定向 2015-10-01 10:04:57 [app] [I]Completed 302 Found in 7ms (Active Record: 0.6ms)
在 ~/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/facts /HTTP/1.1" 404 27 "-" "Ruby"
- - [01/Oct/2015:09:53:28 +1000] "GET /node/?format=yml HTTP/1.1" 404 52 "-" "Ruby"
所以要问的问题是我可以对 Puppet/Foreman HTTP 配置做些什么来解决 404 错误
【问题讨论】:
-
没有 production.log 条目表明请求只到达 Apache 而不是 Foreman。您提到 Web UI 可以正常工作,但是从 master 本身检查
curl -k https://puppet master fqdn返回登录重定向,并查看 /var/log/httpd/foreman-ssl_error_ssl.log 或 /var/log/httpd/error_log 是否包含任何日志记录。 -
我已经用附加数据更新了原始问题
标签: puppet theforeman