第10章 カスタム通知でサポートされている属性

このセクションでは、サポート対象のジョブ属性リストと、通知用のメッセージテキスト作成に適した構文について説明します。サポートされるジョブ属性は以下のとおりです。

  • allow_simultaneous: (ブール値) 複数のジョブが、このジョブに関連付けられた JT から同時に実行できるかどうかを示す
  • controller_node: (文字列) 分離された実行環境を管理したインスタンス
  • created: (日時) ジョブ作成時のタイムスタンプ
  • custom_virtualenv: (文字列) ジョブの実行に使用されるカスタムの仮想環境
  • description: (文字列) ジョブの説明 (任意)
  • diff_mode: (ブール値) 有効になっている場合、ホストのテンプレート化されたファイルに追加されるテキストの変更を標準出力に表示
  • elapsed: (10 進数) ジョブ実行の経過時間 (秒単位)
  • execution_node: (文字列) ジョブが実行するノード
  • failed:: (ブール値) ジョブが失敗した場合は true
  • finished: (日時) ジョブが実行を完了した日時
  • force_handlers: (ブール値) ハンドラーが強制されている場合、ホストでタスクが失敗しても、通知されるとハンドラーが実行する (ホストに到達できない場合でも、状況によってはハンドラーの実行が回避されることに留意)
  • forks: (整数) ジョブに要求されたフォークの数
  • 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 (正常 - WinRM デバッグに対応)
  • host_status_counts: (各ステータスに一意に割り当てられたホスト数)

    • skipped: (整数)
    • ok: (整数)
    • failures: (整数)
    • 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: このインベントリーが含まれる組織
      • 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: (int) 操作を開始したユーザーのデータベース 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: (選択肢) approved、denied、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'}