匹配多个事件
在一条规则中,你可以匹配来自同一来源的一个或多个事件。一旦所有事件都匹配成功,它将执行相应的动作。此时有两个额外的变量会被传递到 playbook 中
events
事实
示例
condition:
all:
- event.i == 1
- event.i == 2
传递到 playbook 中的变量将具有以下值
{
"variables": {
"events": {
"m_0": {
"i": 1
},
"m_1": {
"i": 2
}
},
"facts": {
"m_0": {
"i": 1
},
"m_1": {
"i": 2
}
}
}
}
带有赋值的示例
condition:
all:
- events.first << event.i == 1
- events.second << event.i == 2
传递到 playbook 中的变量将具有以下值
{
"variables": {
"events": {
"first": {
"i": 1
},
"second": {
"i": 2
}
},
"facts": {
"first": {
"i": 1
},
"second": {
"i": 2
}
}
}
}
注意事项
同一个事件表达式不能被使用多次。在下面的情况中,event.i == 1 被使用了两次,因此它将无法匹配任何内容
condition:
all:
- events.first << event.i == 1
- event.i == 1
在下面的情况中,event.i == 2 被使用了两次,因此它将无法匹配任何内容
condition:
all:
- events.saveme << event.i == 2 and event.i > 0
- event.i == 2
一旦某个事件被匹配,它将被移除,且不会匹配任何后续条件。这种情况是可以工作的,因为事件表达式不同
condition:
all:
- events.saveme << event.i == 2 and event.i > 0
- event.i == 0