操作
当规则匹配条件时,它会触发规则相应的操作。支持以下操作
run_playbook
运行 Ansible playbook。
名称 |
描述 |
必填 |
---|---|---|
name |
playbook 的名称,使用 FQCN(完全限定的集合名称),或绝对路径或相对路径。
如果它是相对路径,则它必须相对于执行 ansible-rulebook 命令的当前工作目录。
|
是 |
set_facts |
布尔值,playbook 执行的工件将作为事实插入回规则集中 |
否 |
post_events |
布尔值,playbook 执行的工件将作为事件插入回规则集中 |
否 |
ruleset |
发布事件或断言事实的规则集名称,默认为当前规则集。 |
否 |
retry |
如果 playbook 执行失败,则重试一次,布尔值 true|false |
否 |
retries |
如果 playbook 执行失败,则重试的次数。整数值 |
否 |
delay |
重试间隔,以秒为单位的整数值 |
否 |
verbosity |
运行 playbook 时的详细程度级别,值为 1-4 |
否 |
var_root |
如果事件是深度嵌套的字典,则 var_root 可以指定其值应替换匹配事件值的键名。var_root 可以接受字典来处理我们有多个匹配事件时的数据。 |
否 |
extra_vars |
要作为额外变量传递给 playbook 的额外变量。 |
否 |
json_mode |
布尔值,将 playbook 事件数据作为 json 字符串发送到 stdout,因为它们正在由 ansible-runner 处理 |
否 |
copy_files |
布尔值,将本地 playbook 文件复制到 ansible-runner 项目目录,如果您运行来自 ansible 集合的 playbook,则不需要这样做。 |
否 |
run_module
运行 Ansible 模块
名称 |
描述 |
必填 |
---|---|---|
name |
模块的名称,使用 FQCN(完全限定的集合名称) |
是 |
module_args |
要传递给 Ansible 模块的参数 |
否 |
retry |
如果模块执行失败,则重试一次,布尔值 true|false。默认 false |
否 |
retries |
如果模块执行失败,则重试的次数。整数值,默认为 0 |
否 |
delay |
重试间隔,以秒为单位的整数值 |
否 |
verbosity |
运行模块时的详细程度级别,值为 1-4 |
否 |
extra_vars |
要作为额外变量传递给 playbook 的额外变量。 |
否 |
json_mode |
布尔值,将 playbook 事件数据作为 json 字符串发送到 stdout,因为它们正在由 ansible-runner 处理 |
否 |
set_facts |
布尔值,模块执行的工件将作为事实插入回规则集中 |
否 |
post_events |
布尔值,模块执行的工件将作为事件插入回规则集中 |
否 |
ruleset |
发布事件或断言事实的规则集名称,默认为当前规则集。 |
否 |
var_root |
如果事件是深度嵌套的字典,则 var_root 可以指定其值应替换匹配事件值的键名。var_root 可以接受字典来处理我们有多个匹配事件时的数据。 |
否 |
run_job_template
运行作业模板。
注意
--controller-url
和 --controller-token
或 --controller-username
和 --controller-password
cmd 选项必须提供才能使用此操作
为了在 ansible_eda
命名空间下访问事件信息,请务必选中作业模板中“变量”字段的“启动时提示”框。或者,可以创建一个包含变量 ansible_eda
的调查。同样,如果您计划根据事件信息限制主机执行,请在作业模板中为“限制”字段启用“启动时提示”。
注意
您可以定义环境变量 EDA_CONTROLLER_CONNECTION_LIMIT
来限制到控制器的并发连接数。默认值为 30。
名称 |
描述 |
必填 |
---|---|---|
name |
作业模板的名称 |
是 |
organization |
组织的名称 |
是 |
set_facts |
作业模板执行的工件将作为事实插入回规则集中 |
否 |
post_events |
作业模板执行的工件将作为事件插入回规则集中 |
否 |
ruleset |
发布事件或断言事实的规则集名称,默认为当前规则集。 |
否 |
retry |
如果作业模板执行失败,则重试一次,布尔值 true|false |
否 |
retries |
如果作业模板执行失败,则重试的次数。整数值 |
否 |
delay |
重试间隔,以秒为单位的整数值 |
否 |
var_root |
如果事件是深度嵌套的字典,则 var_root 可以指定其值应替换匹配事件值的键名。var_root 可以接受字典来处理我们有多个匹配事件时的数据。 |
否 |
job_args |
发送到作业模板启动 API 的额外参数。调查的任何答案和其他额外变量都应在嵌套键 extra_vars 中设置。事件和事实也会自动包含在 extra_vars 中。 |
否 |
run_workflow_template
运行工作流模板。
注意
--controller-url
和 --controller-token
或 --controller-username
和 --controller-password
cmd 选项必须提供才能使用此操作
注意
您可以定义环境变量 EDA_CONTROLLER_CONNECTION_LIMIT
来限制到控制器的并发连接数。默认值为 30。
名称 |
描述 |
必填 |
---|---|---|
name |
工作流模板的名称 |
是 |
organization |
组织的名称 |
是 |
set_facts |
工作流模板执行的工件将作为事实插入回规则集中 |
否 |
post_events |
工作流模板执行的工件将作为事件插入回规则集中 |
否 |
ruleset |
发布事件或断言事实的规则集名称,默认为当前规则集。 |
否 |
retry |
如果工作流模板执行失败,则重试一次,布尔值 true|false |
否 |
retries |
如果工作流模板执行失败,则重试的次数。整数值 |
否 |
delay |
重试间隔,以秒为单位的整数值 |
否 |
var_root |
如果事件是深度嵌套的字典,则 var_root 可以指定其值应替换匹配事件值的键名。var_root 可以接受字典来处理我们有多个匹配事件时的数据。 |
否 |
job_args |
发送到工作流模板启动 API 的额外参数。调查的任何答案和其他额外变量都应在嵌套键 extra_vars 中设置。事件和事实也会自动包含在 extra_vars 中。 |
否 |
post_event
名称 |
描述 |
必填 |
---|---|---|
event |
要发布的事件字典 |
是 |
ruleset |
发布事件的规则集名称,默认为当前规则集名称 |
否 |
示例
action:
post_event:
ruleset: Test rules4
event:
j: 4
示例,使用使用分配保存的数据
name: multiple conditions
condition:
all:
- events.first << event.i == 0
- events.second << event.i == 1
- events.third << event.i == events.first.i + 2
action:
post_event:
ruleset: Test rules4
event:
data: "{{events.third}}"
set_fact
名称 |
描述 |
必填 |
---|---|---|
fact |
要发布的事实字典 |
是 |
ruleset |
发布事实的规则集名称,默认为当前规则集名称 |
否 |
示例
action:
set_fact:
ruleset: Test rules4
fact:
j: 1
示例,使用在多个条件中使用分配保存的数据
name: multiple conditions
condition:
all:
- events.first << event.i == 0
- events.second << event.i == 1
- events.third << event.i == events.first.i + 2
action:
set_fact:
ruleset: Test rules4
fact:
data: "{{events.first}}"
示例,使用使用单个条件保存的数据
name: single condition
condition: event.i == 23
action:
set_fact:
fact:
myfact: "{{event.i}}"
retract_fact
名称 |
描述 |
必填 |
---|---|---|
fact |
要删除的事实字典 |
是 |
ruleset |
撤回事实的规则集名称,默认为当前规则集名称 |
否 |
partial |
请求撤回的事实是部分的,并不包含所有键。默认为 true |
否 |
示例
action:
retract_fact:
ruleset: Test rules4
fact:
j: 3
print_event
名称 |
描述 |
必填 |
---|---|---|
pretty |
布尔值以美化打印 |
否 |
var_root |
如果事件是深度嵌套的字典,则 var_root 可以指定其值应替换匹配事件值的键名。var_root 可以接受字典来处理我们有多个匹配事件时的数据。 |
否 |
示例
action:
print_event:
pretty: true
var_root: i
具有多个事件匹配的示例
name: Multiple events with var_root
condition:
all:
- events.webhook << event.webhook.payload.url == "http://www.example.com"
- events.kafka << event.kafka.message.channel == "red"
action:
print_event:
var_root:
webhook.payload: webhook
kafka.message: kafka
shutdown
名称 |
描述 |
必填 |
---|---|---|
delay |
有关关闭前等待多长时间的数值,以秒为单位,默认为 60.0。 |
否 |
message |
要与此关闭关联的消息 |
否 |
kind |
关闭的种类可以是 **graceful** 或 **now**。默认为 graceful。 |
否 |
示例
name: shutdown after 5 events condition: event.i >= 5 action: shutdown: delay: 0.125 message: Shutting down after 5 events
结果
- 当规则的条件满足时,我们会将结果作为
多个条件的事件/事实
单个条件的事件/事实
debug
名称 |
描述 |
必填 |
---|---|---|
msg |
一个简单的字符串或字符串数组,可以包含对事件或事件的引用。 |
否 |
var |
要打印的变量,可以包含对事件或事件的引用。使用 {{ }} 是可选的。 |
否 |
示例
name: debug with single message condition: event.i >= 5 action: debug: msg: Simple debug messagename: debug with multiple messages condition: event.i >= 5 action: debug: msg: - "Message 1 {{ event }}" - Second Messagename: debug with var condition: event.i >= 5 action: debug: var: event.i
none
无操作,在编写测试时很有用,不需要任何参数。