4.3.3.3 通知を含めたPlaybookの定義例
ワークフローでジョブの自動実行をする場合は、自動実行する内容を記述するPlaybookで、通知を行うタイミングを指定できます。通知の"type"は"onDemand"を指定し、通知の内容に、Playbookで設定したパラメータを以下により埋め込むことができます。
- Ops I提供部品「opsi.oi.notify」を使用
Playbookで定義したパラメータを埋め込めます。メッセージ内容や宛先をPlaybookの定義で動的に変更することができます。
注意事項
-
Playbookで定義したnotificationの値は、Notificationのマニフェストファイルで定義したnameの値と一致する必要があります。また、Ops I提供部品「opsi.oi.notify」を使用する場合はNotificationのマニフェストファイルに以下のように設定してください。
- event.resourceは指定しない。
- event.typeは"onDemand"に指定する。
- conditionsは指定しない。
- Playbookで定義した「opsi.oi.notify」のパラメータをNotificationのマニフェストファイルに埋め込む場合、次のように指定する。
{{ .OINotify.params.key }}
- Ops I提供部品「opsi.oi.notify」の実行には認証情報タイプ「OpsI Credential Type」から作成した認証情報が必要です。 「OpsI Credential Type」の「opsi_domain」と「opsi_token」を利用するため、事前に作成し、ジョブテンプレートに設定しておく必要があります。設定方法については「認証情報の登録」を参照してください。
Ops I提供部品「opsi.oi.notify」については「(表)actionのリスト(Playbook用Ops I提供部品)」を参照してください。
NotificationとNotifierのマニフェストの詳細については「Notification、Notifier」を参照してください。
ジョブの自動実行の設定手順については、「ジョブ自動実行の設定手順」を、自動化の画面操作の詳細については「自動化」を参照してください。
Playbook、およびNotificationのマニフェストファイルの定義例を以下に示します。
【ユースケース1:メッセージのタイトルおよび内容の一部をPlaybookに定義する(宛先タイプ:groupMember)】
Notificationのマニフェストファイルを作成し、通知内容をPlaybookのマニフェストファイルに定義します。
この例では宛先のタイプはgroupMemberです。
<Playbookの定義例>
- hosts: localhost
gather_facts: no
tasks:
- name: Send notification
opsi.oi.notify:
notification: notification_sample
params:
title: VM貸出の再申請通知
body: VM貸出の再申請通知が到着しています。申し送り事項を確認の上、対応お願いします。
path: /sys_request/workflow/workflow_list
group: test_group
<Notificationのマニフェストファイルの定義例>
apiVersion: 1.0
kind: notification
type: resource
name: notification_sample
label: notification
event:
type: onDemand
notifications:
- message:
title: '{{ .OINotify.params.title }}'
body: '{{ .OINotify.params.body }}'
referTo: '{{ .System.domain }}{{ .OINotify.params.path }}'
severity: Information
destinations:
- type: groupMember
value: '{{ .OINotify.params.group }}'
enableSystemNotification: false
notifiers:
- opsi_default_email_notifier
【ユースケース2:メッセージのタイトルおよび内容の一部をPlaybookに定義する(宛先タイプ:email)】
Notificationのマニフェストファイルを作成し、通知内容をPlaybookのマニフェストファイルに定義します。
この例では宛先のタイプはemailです。
<Playbookの定義例>
- hosts: localhost
gather_facts: no
tasks:
- name: Send notification
opsi.oi.notify:
notification: notification_sample
params:
title: 脆弱性の検出
body: OSS脆弱性が検出されました。内容を確認の上、対応お願いします。
email: testA@example.com,testB@example.com
<Notificationのマニフェストファイルの定義例>
apiVersion: 1.0
kind: notification
type: resource
name: notification_sample
label: notification
event:
type: onDemand
notifications:
- message:
title: '{{ .OINotify.params.title }}'
body: '{{ .OINotify.params.body }}'
severity: Information
destinations:
- type: email
value: '{{ .OINotify.params.email }}’
notifiers:
- opsi_default_email_notifier