更改 Foreman UI 以忽略 Puppet 资源 'Notify' 消息

Change Foreman UI to ignore Puppet resource 'Notify' messages

我们使用 Puppet + Foreman 通过检查自定义事实来监控环境变化。例如,每当自定义事实等于 'true' 时,人偶就会调用 Notify 资源,并向代理日志发送一条消息。 Puppet 在代理报告中包含此消息,而 Foreman 在 UI.

中显示此消息

问题在于,每当抛出一条消息时,Foreman 都会将此操作视为 "Applied",并且节点状态会更改为 "Active"(蓝色图标)。 我们希望将节点保持在 "No Changes"(绿色)并显示通知消息。

这在某种程度上可能吗?也许定义一个新的自定义资源类型?

这是木偶代码:

class mymodule::myclass::mysubclass {
if $::fact023 == 'fail' {
    notify {'mynotify1':
     message => "WARNING: Node ${::fqdn} failed fact023",
     loglevel => hiera('warnings_loglevel'),
   }   } }

See screenshot of Foreman here

更新: 我将细化问题:有没有一种方法可以使用 Notify 资源而不会导致 puppet 报告节点已更改?意思是只将消息打印到客户端日志(因此消息将在报告中可见)但没有 puppet 将事件分类为已应用的配置?

原因是当 puppet 触发 Notify 资源时,Foreman 将节点标记为活动(已更改)

更新#2 我正在考虑更改 Foreman 报告文件,以便 UI 将忽略 Notify 事件,这样节点的状态将保持不变,但仍会在报告中显示消息。有人能指出我正确的方向吗?谢谢!

更新#3 从 "Notify" 资源类型切换到由 Puppet Forge 中的某个家伙创建的自定义类型 "echo" 后,问题得到解决。谢谢!

还不完全清楚您要完成的任务。一种选择是使用 notice function 而不是资源。函数在 puppet master 上执行,因此您的日志将最终出现在 puppet master 的日志中,而不是代理报告中。这也意味着它不会算作应用资源,并且节点应该看起来很稳定。