我已经按照官方文档在RHEL 7.1虚拟机上安装了foreman (v1.9.0)
我当前的环境包括:
- 1 x Puppet master/foreman
- 2 x制剂(RHEL 6.5 &7)
Foreman被配置为ENC,它将服务于9个环境(包括生产)。在foreman中为foreman/puppetmaster配置了智能代理
代理在生成CSR并获得傀儡主人签名时没有问题。
当我在远程机器上使用命令
运行puppet代理时puppet agent --no-daemonize --server <FQDN> --trace
我得到以下错误
警告:无法获取我的节点定义,但代理将继续:
警告:错误400在服务器上:未能找到
在puppet主机上运行引用的命令
sudo -u puppet /etc/puppet/node.rb <agent FQDN>
返回错误:
检索节点错误
当这个失败时,/var/log/foreman/production.log(包括debug)中没有生成日志,尽管在/var/log/httpd/foreman-ssl_access_ssl.log中有一个http 404错误生成
& lt;IP> - - [30/Sep/2015:15:13:29 +1000] GET/node/<代理FQDN> ?format=yml HTTP/1.1" 404 48 "-" Ruby"代理FQDN>
节点。Rb参考foreman。这是正确的,相对于列出的条目,我可以确认如下:
- : url:
- : ssl_ca:
- : ssl_cert:
- : ssl_key:
等它也是安装过程中生成的默认文件,没有任何更改。
代理在foreman中,但是为了实现这一点,一旦我配置了puppet.conf并生成/签署了代理证书,我运行命令
直到我手动运行命令 ,代理才被导入到foreman中。puppet agent -t <puppet master FQDN>
foreman-rake puppet:import:hosts_and_facts
调用foreman中的一个主机,然后单击'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>
生成日志条目~/领班/production.log
2015-10-01 10:04:57 [app] [I]|| starched GET "/foreman/" for
at 2015-10-01 10:04:57 +10002015-10-01 10:04:57 [app] [I] DashboardController#index作为/的处理2015-10-01 10:04:57 [app] [I]重定向到https://<傀儡主人>/领班/用户/登录2015-10-01 10:04:57 [app] [I] Filter chain stopped as:require_login呈现或重定向2015-10-01 10:04:57 [app] [I]在7毫秒内完成302个发现(活动记录:0.6ms)傀儡主人> 在~/httpd/foreman-ssl_access_ssl.log中我得到了这个
& lt;PUPPET MASTER IP> - - [01/Oct/2015:10:05:26 +1000] "GET/foreman/HTTP/1.1" 302 129 "-" curl/7.29.0"
同一日志中的其他相关日志条目将为
& lt;PUPPET MASTER IP> - - [01/Oct/2015:09:53:28 +1000] "POST/api/hosts/facts/HTTP/1.1" 404 27 "-" "Ruby"
& lt;PUPPET MASTER IP> - - [01/Oct/2015:09:53:28 +1000] "GET/node/<傀儡主人> ?format=yml HTTP/1.1" 404 52 "-" Ruby"傀儡主人>
所以问题是我能对Puppet/Foreman HTTP配置做些什么来解决404错误
看起来ENC脚本正在请求web服务器(/api)的根路径,而Foreman本身托管在子uri (/Foreman/)上。它应该击中/foreman/api/hosts/facts
, /foreman/node/
等,这就是为什么Apache返回404,但Foreman没有看到和记录请求。
您可以更改该节点的URL。在/etc/puppet/foreman中使用。通过:url:
设置。在此处添加/foreman
后缀
或者,如果你使用了Foreman安装程序,那么你可以用--puppet-server-foreman-url=https://example.com/foreman
重新运行它,它应该做同样的事情。