我已根据官方文档在RHEL 7.1 VM上安装了foreman(v1.9.0)。
我目前的环境包括:
Foreman配置为ENC,将为9个环境(公司生产)提供服务。 已经为领班/木偶大师的领班配置了智能代理。
代理商在生成CSR并让木偶大师签名时没有任何问题。
当我使用命令
在远程计算机上运行puppet代理时puppet agent --no-daemonize --server <FQDN> --trace
我收到以下错误
警告:无法获取我的节点定义,但代理将继续:
警告:SERVER上的错误400:找不到&lt; <代理FQDN> via exec:执行'/etc/puppet/node.rb<代理FQDN&gt;'返回1:
在木偶大师上运行引用的命令
sudo -u puppet /etc/puppet/node.rb <agent FQDN>
返回错误:
检索节点时出错&lt; <代理FQDN>净:: 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(包含调试)中没有生成日志。 p>
&LT; IP&GT; - [30 / Sep / 2015:15:13:29 + 1000] GET / node /&lt;代理FQDN&gt;?format = yml HTTP / 1.1“404 48” - “”Ruby“
node.rb引用foreman.yaml,这与我列出的条目有关,我可以确认如下:
它也是安装过程生成的默认文件,没有任何更改。
代理人在领班,但为了实现这一点,一旦我配置了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>
这将生成日志条目 〜/工头/ production.log
2015-10-01 10:04:57 [app] [I] | |对于&lt; starged GET“/ foreman /” PUPPET MASTER IP&gt;在2015-10-01 10:04:57 +1000 2015-10-01 10:04:57 [app] [I] DashboardController处理#index为 / 2015-10-01 10:04:57 [app] [I]重定向到https://&lt; PUPPET MASTER&gt; / foreman / users / login 2015-10-01 10:04:57 [app] [I]过滤链停止为:require_login 渲染或重定向 2015-10-01 10:04:57 [app] [I]完成302发现在7ms(活动记录:0.6ms)
在〜/ httpd / foreman-ssl_access_ssl.log中我得到了这个
&LT; PUPPET MASTER IP&gt; - - [01 / Oct / 2015:10:05:26 +1000]“GET / foreman / HTTP / 1.1”302 129“ - ”“curl / 7.29.0”
同一日志中的其他相关日志条目将是
&LT; PUPPET MASTER IP&gt; - - [01 / Oct / 2015:09:53:28 +1000]“POST / api / hosts / facts /HTTP/1.1”404 27“ - ”“Ruby”
&LT; PUPPET MASTER IP&gt; - [01 / Oct / 2015:09:53:28 +1000]“GET / node /&lt; PUPPET MASTER&gt;?format = yml HTTP / 1.1”404 52“ - ”“Ruby”
所以要问的问题是我可以对Puppet / Foreman HTTP配置做些什么来解决404错误
答案 0 :(得分:3)
看起来ENC脚本正在请求Web服务器(/ api)根目录的路径,而Foreman本身托管在子URI(/ foreman /)上。应该点击/foreman/api/hosts/facts
,/foreman/node/
等,这就是Apache返回404的原因,但Foreman没有看到并记录请求。
您可以通过:url:
设置更改node.rb在/etc/puppet/foreman.yaml中使用的网址。在此处添加/foreman
后缀。
或者,如果您使用Foreman安装程序,那么您可以使用--puppet-server-foreman-url=https://example.com/foreman
重新运行它,这应该做同样的事情。