第 10 章 自定义通知支持的属性

本节介绍支持的作业属性列表,以及构建通知消息文本的正确语法。支持的作业属性有:

  • allow_simultaneous - (布尔值)表示多个作业是否可以从与此作业关联的 JT 同时运行
  • controller_node - (字符串)管理隔离执行环境的实例
  • created - (日期时间)这个作业创建时的时间戳
  • custom_virtualenv - (字符串)用于执行作业的自定义虚拟环境
  • description - (字符串)该作业的可选描述
  • diff_mode - (布尔值)如果启用,标准输出中会显示对主机上任何模板文件进行的文本更改
  • elapsed - (十进制)作业运行所经过的时间(以秒为单位)
  • execution_node - (字符串)执行作业的节点
  • failed - (布尔值)如果作业失败,则为 true
  • finished - (日期时间)作业完成执行的日期和时间
  • force_handlers - (布尔值)当处理程序被强制运行时,即使在该主机上的作业失败,它们也会在收到通知时运行(请注意,在一些情况下,如不可访问的主机,仍然可以阻止处理程序运行)
  • fork - (整数)作业请求的 fork 数量
  • id - (整数)此作业的数据库 id
  • job_explanation - (字符串)状态字段,指示作业在无法运行和捕获 stdout 时的状态
  • job_slice_count - (整数)如果作为分片作业的一部分运行,分片的总数(如果为 1,则作业不是分片作业的一部分)
  • job_slice_number - (整数)如果作为分片作业的一部分运行,则为所操作的清单分片的 ID(如果不是分片作业的一部分,不使用这个属性)
  • job_tags - (字符串)仅执行具有指定标签的任务
  • job_type - (选择) run、check 或 scan
  • launch_type - (选择)manual、relaunch、callback、scheduled、dependency、workflow、sync 或 scm
  • limit - (字符串)如果指定,则 playbook 执行仅限于这组主机
  • modified - (日期时间)最后一次修改作业的时间戳
  • name - (字符串)此作业的名称
  • playbook - (字符串)执行的 playbook
  • scm_revision - (字符串)用于此作业的项目中的 scm 修订(如果可用)
  • skip_tags - (字符串)如果指定,playbook 执行将跳过此组标签
  • start_at_task - (字符串)如果指定,则 playbook 执行从与此名称匹配的任务开始
  • started - (日期时间)作业加入启动队列的日期和时间
  • status - (选择)new、pending、waiting、running、successful、failed、error、canceled
  • timeout - (整数)取消任务前运行的时间(以秒为单位)
  • type - (选择)此作业的数据类型
  • url - (字符串)此作业的 URL
  • use_fact_cache - (布尔值)如果已为作业启用,Tower 将充当 Ansible 事实缓存插件;在 playbook 运行结束后将事实保留到数据库,并缓存事实以供 Ansible 使用
  • verbosity - (选择)0 到 5(与 Normal 到 WinRM Debug 级别相对应)
  • host_status_counts (分配给每个状态的唯一主机数量)

    • skipped (整数)
    • ok (整数)
    • changed (整数)
    • failures (整数)
    • dark (整数)
    • processed (整数)
    • rescued (整数)
    • ignored (整数)
    • failed (布尔值)
  • summary_fields:

    • 清单(inventory)

      • id - (整数)清单的数据库 ID
      • name - (字符串)清单的名称
      • description - (字符串)清单的可选描述
      • has_active_failures - (布尔值)(已弃用)指明此清单中是否有主机失败的标记
      • total_hosts - (已弃用)(整数)此清单中的主机总数。
      • hosts_with_active_failures - (已弃用)(整数)此清单中有活跃故障的主机数
      • total_groups - (已弃用)(整数)此清单中的组总数
      • groups_with_active_failures - (已弃用)(整数)此清单中有活跃故障的主机数
      • has_inventory_sources - (已弃用)(布尔值)指明此清单是否具有外部清单源的标记
      • total_inventory_sources - (整数)在此清单中配置的外部清单源总数
      • inventory_sources_with_failures - (整数)此清单中有故障的外部清单源数量
      • organization_id - (id) 包含此清单的机构
      • kind -(选择)(空字符串)(代表主机与清单有直接链接)或 'smart'
    • project

      • id - (整数)项目的数据库 ID
      • name - (字符串)项目的名称
      • description - (字符串)项目的可选描述
      • status - (选择)new、pending、waiting、running、successful、failed、error、canceled、never updated、ok 或 missing 之一
      • scm_type - 其中一个(空字符串)、git、hg、svn、insights
    • job_template

      • id - (整数)作业模板的数据库 ID
      • name - (字符串)作业模板的名称
      • description - (字符串)作业模板的可选描述信息
    • unified_job_template

      • id - (整数)统一的作业模板的数据库 ID
      • name - (字符串)统一的作业模板的名称
      • description - (字符串)统一的作业模板的可选描述
      • unified_job_type - (选择)统一的作业类型(job、workflow_job、project_update 等)
    • instance_group

      • id - (整数)实例组的数据库 ID
      • name - (字符串)实例组的名称
    • created_by

      • id -(整数)启动操作的用户的数据库 ID
      • username - (字符串)启动了操作的用户名
      • first_name - (字符串)名
      • last_name - (字符串)姓
    • labels

      • count - (整数)标签数
      • results - 表示标签的字典列表(例如 {"id": 5, "name": "database jobs"})

可以在自定义通知消息中使用分组大括号 {{ }} 来引用关于作业的信息。使用点表示法访问特定作业属性,如 {{ job.summary_fields.inventory.name }}。在大括号或周围使用的任何字符,或纯文本,均可添加以进行说明,如 '#' 用于作业 ID,单引号用于表示某些描述符。自定义消息可在整个消息中包含多个变量:

{{ job_friendly_name }} {{ job.id }} ran on {{ job.execution_node }} in {{ job.elapsed }} seconds.

除了作业属性外,其他一些变量还可添加到模板中:

approval_node_name - (字符串)批准节点名称

approval_status - (选择)批准、被拒绝和 timed_out 之一

url - (字符串)发出通知的作业 URL(这适用于启动、成功、失败和批准通知)

workflow_url - (字符串)指向相关批准节点的 URL。这可让通知接收者进入相关的工作流作业页面来查看具体情况(例如,此节点可在以下位置查看:{{ workflow_url }})。在与批准相关的通知中,url 和 workflow_url 都相同。

job_friendly_name - (字符串)作业的友好名称

job_metadata - (字符串)作业元数据以 JSON 字符串表示,例如:

{'url': 'https://towerhost/$/jobs/playbook/13',
 'traceback': '',
 'status': 'running',
 'started': '2019-08-07T21:46:38.362630+00:00',
 'project': 'Stub project',
 'playbook': 'ping.yml',
 'name': 'Stub Job Template',
 'limit': '',
 'inventory': 'Stub Inventory',
 'id': 42,
 'hosts': {},
 'friendly_name': 'Job',
 'finished': False,
 'credential': 'Stub credential',
 'created_by': 'admin'}