操作

当规则匹配条件时,它会触发规则相应的操作。支持以下操作

run_playbook

运行 Ansible playbook。

运行 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}}"
事件和事实前缀具有规则范围,不能在规则之外访问。
规则。请注意,在访问事件结果时使用 Jinja 替换。

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}}"
规则手册可以有多个规则集,set_fact/retract_fact/post_event 允许您
在规则手册中定位不同的规则集。您目前无法将事件断言为
多个规则集,它可以断言到单个规则集。默认是当前
规则集。请注意,在上面的示例中,在访问时使用 Jinja 替换
操作中的事件结果。

retract_fact

从规则引擎中正在运行的规则集中删除事实

名称

描述

必填

fact

要删除的事实字典

ruleset

撤回事实的规则集名称,默认为当前规则集名称

partial

请求撤回的事实是部分的,并不包含所有键。默认为 true

示例

action:
  retract_fact:
    ruleset: Test rules4
    fact:
      j: 3

shutdown

关闭 ansible-rulebook

名称

描述

必填

delay

有关关闭前等待多长时间的数值,以秒为单位,默认为 60.0。

message

要与此关闭关联的消息

kind

关闭的种类可以是 **graceful** 或 **now**。默认为 graceful。

生成关闭事件,该事件将终止 ansible-rulebook 进程。
如果规则手册中有多个规则集正在运行,则发出关闭命令将导致
所有其他规则集都结束,需要谨慎考虑正在运行的 playbook,这些 playbook
当其中一个规则集决定关闭时可能会受到影响。关闭消息是
广播给所有正在运行的规则集。

示例

name: shutdown after 5 events
condition: event.i >= 5
action:
   shutdown:
     delay: 0.125
     message: Shutting down after 5 events

结果

当规则的条件满足时,我们会将结果作为
  • 多个条件的事件/事实

  • 单个条件的事件/事实

此数据在 playbook 被调用时作为 extra_vars 提供给您的 playbook。
在下面的所有示例中,您会看到事实/事实分别是事件/事件的精确副本
您可以在 playbook 中使用其中任何一个。

debug

调试 ansible-rulebook

名称

描述

必填

msg

一个简单的字符串或字符串数组,可以包含对事件或事件的引用。

var

要打印的变量,可以包含对事件或事件的引用。使用 {{ }} 是可选的。

debug 操作试图模拟 ansible 中的 debug 命令。
如果没有提供参数,它将打印匹配的事件以及其他重要属性。
msgvar 是互斥的,您在调试中只能使用其中一个。
msg 可以是单个字符串或字符串数组,包含对事件或事件的引用。
使用 var 时,使用 Jinja 风格的大括号是可选的,如下例所示。

示例

name: debug with single message
condition: event.i >= 5
action:
   debug:
     msg: Simple debug message
name: debug with multiple messages
condition: event.i >= 5
action:
   debug:
     msg:
        - "Message 1 {{ event }}"
        - Second Message
name: debug with var
condition: event.i >= 5
action:
   debug:
     var: event.i

none

无操作,在编写测试时很有用,不需要任何参数。