首先,我知道 serverfault 上已经有一个非常类似的问题,但它并不能完全回答我的问题。
因此,我的设置如下:我有一台服务器,运行 Ubuntu 14.04 LTS 和 puppet master 3.4.3,以及 foreman 1.6。客户端是一台运行 puppet agent 3.7.0 的 Windows 7 计算机。
自动运行工作正常,我只是无法让Run Puppet
按钮正常工作。我总是看到这个红色覆盖层和以下消息:
failed to execute puppetrun: ERF12-4252 [ProxyAPI::ProxyException]: Unable to execute Puppet run ([RestClient::InternalServerError]: 500 Internal Server Error) for proxy https://puppetmaster:8443/puppet
我按照维基百科并在节点上添加了之前不存在的文件 auth.conf。我将其放入C:\ProgramData\PuppetLabs\puppet\etc\
puppet.conf 文件所在的目录中。我还向此目录添加了一个空的 namespaceauth.conf。在节点和服务器上,我激活了 listen=true。我将 foreman-proxy 添加到 sudoers 文件中。我多次重新启动了节点服务和 puppetmaster。我发现的所有其他帖子都说“现在您有一个可用的运行 puppet 按钮”。除了我之外,它不起作用。
我能找到的唯一日志条目是在 /var/log/foreman-proxy/proxy.log:
E, [2014-10-20T17:50:53.051681 #1119] ERROR -- : Failed puppet run: Check Log files
我检查了所有能找到的日志文件,但找不到关于此错误可能是什么的更多信息。编辑:添加了指向 wiki 的链接第二次编辑:我还检查了Foreman 错误代码但不幸的是,我得到的代码没有任何与之相关的信息。(是的,我检查了代理通信错误 - 没有)
答案1
终于成功运行了!错误代码 ( ERF12-4252
) 似乎对应不同的错误。我有不同的配置错误,导致控制台上出现不同的错误,但 Foreman 总是报告相同的消息。
对我来说,解决问题的方法是使用puppet kick <mynode>
命令行中的命令。在那里我发现我的客户端证书名称有拼写错误,因此与主机名不符。
在 Windows 客户端上,我做了同样的事情(停止 puppet windows 服务并在 puppet 命令行窗口中启动代理,以puppet agent --debug --no-daemonize
验证代理上是否发生任何事情。
这也有助于找到 auth.conf 文件的正确目录。在 Windows 上安装代理时,auth.conf 文件放置在安装目录中(通常C:\Program Files\PuppetLabs\Puppet\puppet\conf
),但预计放置在C:\ProgramData\PuppetLabs\puppet\etc
!
因此,将文件复制到此位置并添加所需的行即可。
path /run
allow puppetmaster.dev.nextgen.local
之后,我只需要删除 foreman 中的旧主机,在代理上创建一个新证书,在 puppetmaster 上对其进行签名,然后在 foreman 中添加新主机。
答案2
有关如何设置不同方法以使“运行傀儡”工作的文档在这里:
目前,可以通过“MCollective”、“Puppetssh”和“puppetrun (或 kick)”(已弃用)设置远程运行。
答案3
它对我有用我选择了 puppetssh 源http://theforeman.org/manuals/1.11/index.html#4.3.6Puppet
按照上述链接中内容 puppetssh 下的一条指令,现在在文件中编辑以下行。
/etc/foreman-proxy/settings.d/puppet
:puppetssh_command: /usr/bin/puppet agent --onetime --no-usecacheonfailure
将其转换为
:puppetssh_command: /usr/bin/puppet agent --test
现在它会像魔法一样工作,如果它不工作,请随时回复,欢呼