我工作的公司有一个 Puppet 服务器,其中安装了 Foreman。
大约有 200 台 Linux 机器由 Puppet 服务器管理。
当查看 Foreman GUI 时,大多数服务器都会出现一个绿色图标,显示“无变化”,但有些服务器会显示一个黄色/橙色图标,并带有一个工具提示,显示“不同步”。
您可以在以下屏幕截图中看到大多数服务器都显示绿色状态,只有服务器“sgproxy08”不同步:
puppet agent -t
在 sgproxy08 服务器上运行正常完成:
[root@sgproxy08 ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sgproxy08.sg.company.com
Info: Applying configuration version '1436862601'
Notice: Finished catalog run in 49.90 seconds
[root@sgproxy08 ~]#
现在有两个问题:
- 这个图标要变绿并且同步需要什么要求?
- 我该如何解决此类问题?
答案1
如果您使用的是 Foreman 1.8 或更低版本,仅当 Foreman 超过设置时间 5 分钟未收到该主机的任何报告时,您的主机才会显示为“不同步”木偶间隔'(在“管理”>“设置”中检查)。默认情况下,这将是35分钟。有一个'不同步间隔'设置允许您在 Foreman 1.9 上自定义此项。
为了开始排除此故障(缺少报告),我会查看/var/log/foreman/production.log
您的 Foreman 箱并检查当 Puppet 完成运行时您是否收到来自该主机的报告。
答案2
我在 Foreman 中找到了通知不同步的原因。似乎这些服务器中有一个进程卡住了puppet agent -t
,如下所示:
root 7531 21487 0 Aug09 ? 00:00:03 puppet agent: applying configurat
一旦我终止该进程并puppet agent -t
再次运行,问题就解决了。
答案3
由于主机/服务器重启、网络问题或服务器与代理之间的 Puppet 版本不匹配,主机可能会不同步。
对于版本不匹配的问题,您可以通过“puppet agent -t”升级puppet agent以匹配服务器版本并同步主机。
如果您启用了 foreman 的 remote-execution 和 remote-execution-ssh 插件,则可以从 Foreman 控制台运行“puppet agent -t”命令来处理不同步的主机。步骤如下:
在 foreman 服务器中启用远程执行插件,可能需要重启服务器
sudo foreman-installer --enable-foreman-plugin-remote-execution --enable-foreman-proxy-plugin-remote-execution-ssh
同步主机
- 转到“主机 → 所有主机”,然后选中不同步主机旁边的复选框
- 主机表的右上角会出现一个“选择操作”按钮。从操作列表中选择“安排远程作业”选项。
- 在显示的表单中,保留默认值,并在“命令”文本框中复制“sudo puppet agent -t”(不带引号)。如果 puppet 二进制文件不在主机的 PATH 中,您可能需要提供 puppet 的完整路径(例如 /opt/puppetlabs/puppet/bin/puppet)。单击提交。
- 一旦命令在主机上远程执行,它将与服务器同步,并且 Foreman 应该在几分钟后更新主机状态以同步。