我们使用Puppet + Foreman通过检查自定义事实来监控环境的变化。例如,每当自定义事实等于"true"时,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 触发通知资源时,Foreman 会将节点标记为活动(已更改(
更新 #2我正在考虑更改 Foreman 报告文件,以便 UI 将忽略 Notify 事件,以便节点的状态保持不变,但仍在报告中显示消息。有人可以指出我正确的方向吗?谢谢!
更新 #3从"通知"资源类型切换到由 Puppet Forge 中的某个家伙创建的自定义类型"echo"后修复的问题。谢谢!
目前还不完全清楚您要完成什么。一种选择是使用通知功能而不是资源。函数在傀儡主服务器上执行,因此日志最终将出现在傀儡主服务器的日志中,而不是代理报告中。这也意味着它不会算作已应用的资源,并且节点应该看起来是稳定的。