我们正在使用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'),
} } }
See screenshot of Foreman here
更新: 我将改进这个问题:是否有办法使用Notify资源而不会导致puppet报告节点已更改?含义只是将消息打印到客户端日志(因此消息将在报告中显示)但没有puppet将事件分类为应用配置?
原因是当puppet触发Notify资源时,Foreman将节点标记为活动(已更改)
更新#2 我正在考虑更改Foreman报告文件,以便UI将忽略Notify事件,以便节点的状态保持不变但仍然在报告中显示消息。有人能指出我正确的方向吗?谢谢!
更新#3 从“通知”资源类型切换到由Puppet Forge中的某个家伙创建的自定义类型"echo"后修复了问题。谢谢!
答案 0 :(得分:0)
目前还不完全清楚你想要完成什么。一种选择是使用notice function而不是资源。函数在puppet master上执行,因此日志将最终出现在puppet master的日志中而不是代理报告中。这也意味着它不会被视为应用资源,并且该节点应该看起来是稳定的。