25.5. 创建自定义通知
您可以在通知表单上 自定义每个 通知类型 的文本内容。
流程
-
在导航面板中,选择
。 - 点 。
- 从 Type 列表中选择通知类型。
使用切换启用 自定义消息。
您可以为各种作业事件提供自定义消息,如下所示:
- 启动消息正文
- 成功消息正文
- 错误消息正文
- 工作流已批准的正文
- 工作流拒绝消息正文
- 工作流待处理消息正文
- 工作流超时消息正文
消息表单因您要配置的通知类型而异。例如,电子邮件和 PagerDuty 通知的消息显示为典型的电子邮件,其中包含正文和主题,在这种情况下,自动化控制器会将字段显示为 Message 和 Message Body。其他通知类型仅针对每种事件要求 消息。
Message 字段预先填充一个模板,其中包含顶层变量,并与属性合并,如 id
或 name
。模板用大括号括起,可以从自动化控制器提供的固定字段集合中提取,如预先填充的消息字段所示:
这个预先填充的字段建议通常向接收事件通知的接收者显示信息。您可以根据需要为作业添加自己的属性来自定义这些消息。自定义通知消息使用 Jinja 呈现;Ansible playbook 使用的同一模板引擎。
消息和消息正文具有不同的内容类型,如下所示:
- 信息始终只是字符串,仅一行。不支持新行。
消息正文可以是字典或文本块:
-
Webhooks 和 PagerDuty 的消息正文使用字典定义。这些的默认消息正文是
{{ job_metadata }}
,您可以保留原样的值,或者提供自己的字典。 电子邮件的消息正文使用文本块或多行字符串。默认消息正文为:
{{ job_friendly_name }} #{{ job.id }} had status {{ job.status }}, view details at {{ url }} {{ job_metadata }}
您可以编辑此文本,使
{{ job_metadata }}
留在,或者丢弃{{ job_metadata }}
。由于正文是文本块,它可以是您想要的任何字符串。{{ job_metadata }}
呈现为包含描述正在执行作业的字段的字典。在所有情况下,{{ job_metadata }}
包括以下字段:-
id
-
name
-
url
-
created_by
-
started
-
finished
-
status
追溯
注意您无法查询
{{ job_metadata }}
中的各个字段。当您在通知模板中使用{{ job_metadata }}
时,所有数据都会被返回。生成的字典类似如下:
{"id": 18, "name": "Project - Space Procedures", "url": "https://host/#/jobs/project/18", "created_by": "admin", "started": "2019-10-26T00:20:45.139356+00:00", "finished": "2019-10-26T00:20:55.769713+00:00", "status": "successful", "traceback": "" }
如果
{{ job_metadata }}
在作业中呈现,它将包括以下附加字段:-
清单(inventory)
-
project
-
playbook
-
credential
-
limit
-
extra_vars
主机
生成的字典类似如下:
{"id": 12, "name": "JobTemplate - Launch Rockets", "url": "https://host/#/jobs/playbook/12", "created_by": "admin", "started": "2019-10-26T00:02:07.943774+00:00", "finished": null, "status": "running", "traceback": "", "inventory": "Inventory - Fleet", "project": "Project - Space Procedures", "playbook": "launch.yml", "credential": "Credential - Mission Control", "limit": "", "extra_vars": "{}", "hosts": {} }
如果
{{ job_metadata }}
在工作流作业中呈现,它将包括以下附加字段:body
(此枚举工作流作业中的节点,并包含与每个节点关联的作业描述)生成的字典类似如下:
{"id": 14, "name": "Workflow Job Template - Launch Mars Mission", "url": "https://host/#/workflows/14", "created_by": "admin", "started": "2019-10-26T00:11:04.554468+00:00", "finished": "2019-10-26T00:11:24.249899+00:00", "status": "successful", "traceback": "", "body": "Workflow job summary: node #1 spawns job #15, \"Assemble Fleet JT\", which finished with status successful. node #2 spawns job #16, \"Mission Start approval node\", which finished with status successful.\n node #3 spawns job #17, \"Deploy Fleet\", which finished with status successful." }
-
-
Webhooks 和 PagerDuty 的消息正文使用字典定义。这些的默认消息正文是
如果您创建使用无效语法或引用不可用字段的通知模板,则会显示一条错误消息,指出错误的性质。如果您删除通知的自定义消息,则会在其位置显示默认消息。
如果您在不编辑自定义消息(或编辑并恢复到默认值)的情况下保存通知模板,Details 屏幕会假定默认值,且不会显示自定义消息表。如果您编辑并保存任何值,则整个表会显示在 Details 屏幕中。
其他资源
- 如需更多信息,请参阅 Ansible 文档中的 使用带有 Jinja2 的变量。
- 自动化控制器需要有效的语法来检索正确的数据来显示消息。
有关支持的属性和正确的语法构建列表,请参阅 自定义通知部分支持的属性。