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を使用する場合は、以下のパラメータを設定する必要があります。

(表)opsi.oi.notifyのパラメータ

パラメータ 必須 型 説明
notification Yes String 通知に使用するNotificationのマニフェストファイル※の名前
存在しない名前や、event.typeがonDemandではないマニフェストファイルを指定した場合は実行エラーとなる。
params No key-value形式のObjectを指定する
valueはString型
Notificationのマニフェストファイルに渡すパラメータ
Notificationのマニフェストファイルでは、.OINotifyでパラメータの値を取得できる。
※Notificationのマニフェストファイルの詳細については「Notification、Notifier」 を参照してください。

opsi.oi.notifyの戻り値は以下の通りです。

(表)opsi.oi.notifyの戻り値

パラメータ 説明
msg メッセージ
API「POST /api/v1/notifications」のレスポンスから"message"の値が返却される。
failed API「POST /api/v1/notifications」の実行が失敗したかどうか
  • true:失敗
  • false:成功


(2)opsi.oi.graphql

PlaybookからAPI「POST /api/v1/graphql」を実行し、カスタムテーブルの操作を行います。

opsi.oi.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」の実行が失敗したかどうか
  • true:失敗
  • false:成功

注意事項注意事項

本部品で操作するテーブルの操作には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 }}"