使用Puppet节点的工头Net :: HTTPNotFound错误

时间:2015-09-30 06:12:43

标签: puppet theforeman

我已根据官方文档在RHEL 7.1 VM上安装了foreman(v1.9.0)。

我目前的环境包括:

  • 1 x Puppet master / foreman
  • 2 x剂(RHEL 6.5& 7)

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,这与我列出的条目有关,我可以确认如下:

  • :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>

这将生成日志条目 〜/工头/ 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错误

1 个答案:

答案 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重新运行它,这应该做同样的事情。