6.1.2 Ops I提供部品(Playbook)
ワークフローでジョブの自動実行をするために、ワークフローからAWXのジョブテンプレートを実行します。ジョブテンプレートを実行するには、WorkflowのTask modelの「action」でOps I提供部品のawx.run_job_templateを、「input」でジョブテンプレート名を設定します。ジョブテンプレートには、自動実行する内容を記述したPlaybookがひもづけられます。ジョブの自動実行の設定手順については、「ジョブ自動実行の設定手順」を、自動化の画面操作の詳細については「自動化」、Ops I提供部品のawx.run_job_templateについては「awx.run_job_template」を参照してください。
Playbookの中で使用できる、Ops I上の操作を行うための部品を以下で説明します。
(表)actionのリスト(Playbook用Ops I提供部品)
| Action | 説明 |
|---|---|
| opsi.oi.notify | Playbookから任意のタイミングで通知を行う。 |
| opsi.oi.graphql | Playbookからカスタムテーブルの操作を行う。 |
注意事項
Playbook用Ops I提供部品の実行には認証情報タイプ「OpsI Credential Type」から作成した認証情報が必要です。 「OpsI Credential Type」の「opsi_domain」と「opsi_token」を利用するため、事前に作成し、ジョブテンプレートに設定しておく必要があります。設定方法については「認証情報の登録」を参照してください。
(1)opsi.oi.notify
PlaybookからAPI「POST /api/v1/notifications」を実行し、通知を行います。
Playbookから任意のタイミングで通知を行う場合に使用します。paramsを使用することで、通知のメッセージや宛先をPlaybookで指定することも可能です。
opsi.oi.notifyを使用する場合は、以下のパラメータを設定する必要があります。
| パラメータ | 必須 | 型 | 説明 |
|---|---|---|---|
| notification | Yes | String | 通知に使用するNotificationのマニフェストファイル※の名前 存在しない名前や、event.typeがonDemandではないマニフェストファイルを指定した場合は実行エラーとなる。 |
| params | No | key-value形式のObjectを指定する valueはString型 |
Notificationのマニフェストファイルに渡すパラメータ Notificationのマニフェストファイルでは、.OINotifyでパラメータの値を取得できる。 |
opsi.oi.notifyの戻り値は以下の通りです。
(表)opsi.oi.notifyの戻り値
| パラメータ | 説明 |
|---|---|
| msg | メッセージ API「POST /api/v1/notifications」のレスポンスから"message"の値が返却される。 |
| failed | API「POST /api/v1/notifications」の実行が失敗したかどうか
|
(2)opsi.oi.graphql
PlaybookからAPI「POST /api/v1/graphql」を実行し、カスタムテーブルの操作を行います。
opsi.oi.graphqlを使用する場合は、以下のパラメータを設定する必要があります。
| パラメータ | 必須 | 型 | 説明 |
|---|---|---|---|
| query | Yes | String | 実行したい操作 QueryまたはMutationに文字列で指定する。 |
| variables | No | key-value形式のObjectを指定する valueはString型 |
GraphQLのクエリ内で指定するvariablesに設定する値 |
opsi.oi.graphqlの戻り値は以下の通りです。
(表)opsi.oi.graphqlの戻り値
| パラメータ | 説明 |
|---|---|
| data | API「POST /api/v1/graphql」の実行結果 Object形式で返却されます。詳細は「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス詳細>標準提供API>標準提供API(v1)」のgraphqlを参照してください。 |
| msg | メッセージ API「POST /api/v1/graphql」のレスポンスから"message"の値が返却される。 |
| failed | API「POST /api/v1/graphql」の実行が失敗したかどうか
|
注意事項
本部品で操作するテーブルの操作にはACLが適用されます。操作するテーブルに権限があるユーザーのOps Iトークンを使用してください。
Playbookのタスクの記載例を以下に示します。
この例では、「query」で実行するクエリを指定しています。また、実行結果である「result」は、別のタスクから参照し使用できます。
<Playbookのタスクの記載例>
- hosts: localhost
gather_facts: no
tasks:
- name: Insert custom table record
opsi.oi.graphql:
query: |
mutation MyMutation(
$group_id: uuid!,
$related_group_uuid: uuid!,
) {
insert_u_custom_table_abc(
objects: [
{
group: $group_id,
sys_related_groups: {
data: [
{
group_id: $related_group_uuid
type: "type A"
}
]
}
}
]
) {
affected_rows
returning {
id
group
}
}
}
variables:
group_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
related_group_uuid: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
register: result
- name: Output the newly created record
ansible.builtin.debug:
msg: |
ID: {{ item.id }},
Owned_group” {{ item.group_id }}
loop: "{{ result.data.data.insert_u_custom_table_abc.returning }}"