我们使用 Puppet + Foreman 通过检查自定义事实来监控环境变化。例如,只要自定义事实等于“真”,puppet 就会调用 Notify 资源,并向代理日志发送一条消息。Puppet 在代理报告中包含此消息,Foreman 在 UI 中显示此消息。
问题在于,每当抛出消息时,Foreman 都会将此操作视为“已应用”,并且节点状态会更改为“活动”(蓝色图标)。我们希望将节点保持在“无更改”(绿色)并显示通知消息。
这在某种程度上可能吗?也许定义一个新的自定义资源类型?
这是木偶代码:
class mymodule::myclass::mysubclass {
if $::fact023 == 'fail' {
notify {'mynotify1':
message => "WARNING: Node ${::fqdn} failed fact023",
loglevel => hiera('warnings_loglevel'),
} } }
更新:我会细化这个问题:有没有办法在不导致 puppet 报告节点已更改的情况下使用 Notify 资源?意思只是将消息打印到客户端日志(因此消息将在报告中可见)但没有 puppet 将事件分类为应用配置?
原因是当 puppet 触发 Notify 资源时,Foreman 将节点标记为活动(已更改)
更新#2 我正在考虑更改工头报告文件,以便 UI 将忽略通知事件,以便节点的状态将保持不变,但仍会在报告中显示消息。有人可以指出我正确的方向吗?谢谢!
更新 #3 从“通知”资源类型切换到由 Puppet Forge 中的某个家伙创建的自定义类型“回声”后修复了问题。谢谢!