PagerDuty Workflow Automationを触ってみる

# はじめに

PagerDutyはインシデント管理ソリューションとして日本国内でも徐々に知られるようになってきていますが、インシデント対応の作業を支援する機能の一環として、ジョブ自動化の機能（Runbook Automation）も提供しています。

ですが、実は他にもAutomationの機能の提供予定があることをご存知でしょうか？それが本記事で取り上げる「Workflow Automation」になります。
# PagerDuty Automation ソリューション全体像
Workflow Automationの紹介に入る前に、PagerDutyが提供するAutomationソリューションの全体像を整理してみましょう。

こちらの図にあるように、PagerDuty Automationは、ジョブ自動化の機能（Runbook Automation）と、ビジネスプロセスの自動化の機能（Workflow Automation）の2つから構成されています。

![010bb968-a0b7-431d-9f2b-964bb5e628f6.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/8d5fb3be-124a-f6f7-f38f-4331996ba76b.jpeg)

これらの機能は独立したソリューションとして、単体でも使うことができますし、PagerDutyのインシデント管理機能（PagerDutyというとこちらの機能を連想する方が多いと思います）と組み合わせて、発生したインシデントの診断や復旧を試みるための処理をRunbook Automationで自動実行したり、復旧作業を実施して良いかどうか承認を得るためにWorkflow Automationを使用して承認フローを回したりといった使い方をすることもできます。

Runbook Automationは、元々Rundeckというジョブ自動化ソフトウェアとして提供されていたものを、2020年にPagerDutyが買収してSaaS型の商用サービスとして提供を開始しており、Workflow AutomationはCatalyticが提供していたサービスを2022年にPagerDutyが買収したという経緯があり、たまたまではありますが、どちらも買収という似たような経緯でPagerDutyの一員となった機能です。

https://www.pagerduty.com/newsroom/pagerduty-closes-acquisition-rundeck/

https://www.pagerduty.com/newsroom/pagerduty-to-acquire-catalytic-2/

これらの買収の背景には、PagerDutyがインシデント管理のみならず、日々のIT運用においても、少しでも運用担当者の負荷を軽減し、より生産性の高い業務に当たっていただけるよう定常的な作業を自動化する機能を提供し、IT運用全体を効率化して、今後益々重要になっていくデジタルを活用したビジネスの信頼性向上と収益の最大化を実現するという、PagerDutyが掲げるミッションがあります。


なお、PagerDutyには似たような名前のIncident Workflowという機能がありますが、こちらはインシデント対応中に必要となる各種定型作業（関係者協議用のSlackチャンネルやZoom/Teams会議の立ち上げ、エンドユーザーへのアナウンス、プロジェクト管理ツールやITSMツールとの連携など）の自動化を支援する機能であり、Workflow Automationとは別の機能です。

https://www.pagerduty.co.jp/blog/incident-workflows-deep-dive/

Incident WorkflowからWorkflow AutomationのWorkflowを呼び出して、インシデント対応作業の実施に当たって必要な承認を得るといったように、連携した使い方もできるようになる予定です。
# Workflow Automation の利用方法

さて、前置きはこのぐらいにして、実際にWorkflow Automationを触ってみましょう。と言いたいところなのですが、いきなりで恐縮ですが、一点お断りがあります。

:::note info
2024年末現在、Workflow Automationをセルフサービスで評価いただく方法は提供されていません。評価版が一般公開され次第、こちらの記事をアップデートしたいと思います。
:::

ということで、期待いただいた方には申し訳ありません。。。Workflow Automationの機能自体はまだ広く皆様に触っていただくことはできませんが、実際にどのようにWorkflowを作成していくのかイメージを掴んでいただけるように、本記事ではシンプルなWorkflowの作成手順をご紹介します。

### Workflow Automation のリファレンス ガイド

また、さらに詳しく知りたい方のために、Workflow Automationの概念や、高度なWorkflowを作っていくためのリファレンス ガイドがHelp CenterというWebサイトで公開されています。

https://help.catalytic.com/

Help Centerの冒頭に、「What is Workflow Automation?」というページへのリンクがあります。こちらのページに、Workflow Automationの理解に役立つ解説動画が複数公開されていますので、お時間のある方はこちらの動画を観て概要を把握し、皆様の日々の業務の自動化に使えそうか、想いを巡らせてみていただければと思います。

![What is Workflow Automation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/1a85f8f2-da16-63a1-e413-8d19bb47a8bc.png)

https://help.catalytic.com/learn/

それでは、実際にWorkflow Automationの操作を説明していきます。

:::note info
本記事は開発中の機能の紹介となりますので、記載した手順や画面などは今後変更となる可能性があります。予めご了承ください。
:::

### Workflow の一覧を表示
実際にWorkflowを作成するには、まず、PagerDuty Workflow AutomationのWebコンソールにログイン後、左上の「Workflows」タブをクリックし、下記のWorkflow一覧のページにアクセスします。

![Workflow Automation2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/51368f23-f309-4382-d7ed-be55658e725d.png)

このページには、同じ組織に所属する他のユーザーが作成し公開したWorkflowも一覧で表示されており、フィルターを掛けて検索することもできますので、一からWorkflowを作成する以外にも、他の人が作成したWorkflowを参考にしたり、コピーして作り替えていくといった方法でもWorkflowを作成することができます。

また、フラットに同じ階層に複数の人が複数のWorkflowを作成していくことができますが、数が増えてくると分かりにくくなってきます。そこで、Workspaceという階層構造、言わばフォルダを作り、そこにWorkflowを作成していくことで整理することが可能です。Workspaceは多段階（入れ子）で作成することができます。

本記事では、まず一つのWorkspaceを作成し、その中にシンプルな申請承認を行うWorkflowを作成していきます。

### Workspace の作成

1\. Workspaceを新規に作成するには、右上の「．．．」より、「Create a Workspace」をクリックします。

![img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/2f698ef7-1ea0-b16f-ed7f-0e347ade7e41.png)

2\. 表示されたダイアログ画面にて、Workspaceの名前や説明、公開範囲の指定を行った後、「Create」をクリックするとWorkspaceが作成されます。
「Permissions」で`Restricted: Visible to designated users only`を選択し、公開したいユーザーを選ぶことで公開範囲を限定したり、自分だけにして非公開とすることも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/51794126-7974-c2d8-2b13-8dad378e92ce.png)

### Workflow の作成

1\. Workspaceが作成できたら、次にWorkflowを作成していきます。Workspaceの画面で、右上の「Create a Workflow」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/b48b958a-aeaa-d60d-9261-d83172eba3ae.png)

2\. 表示されたダイアログ画面で、一からWorkflowを作成する「Blank Template」をクリックします。
予めExportした既存のWorkflowをImportしたり、組織がTemplateを公開していれば、そのTemplateを選択して作成を開始することもできます。

![img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/f29a0db0-c78d-6612-296f-855a69ffcac8.png)


3\. 「Blank Template」の画面で、Workflowの名前や説明の入力、カテゴリ、オーナー、セキュリティ（編集や参照、実行の権限を指定）の設定を行い、「Create」をクリックします。本記事では、申請承認を行うWorkflowを作成しますので、名前を`Approval Workflow`としています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/1c10d5c6-184e-72fb-bc1c-02f8e45ba1d8.png)

4\. いよいよここからWorkflowの中身を作っていきます。まずは申請画面のFormをデザインします。Workflowの編集画面の下部に、Form Fieldsという項目がありますので、その下の「+ Add a Field」をクリックします。

![img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/b20e5c75-7576-74a6-2751-813017bbf665.png)

5\. 表示されたダイアログ画面にて、「Display Name」と「Field Reference Name」を入力します。本記事ではそれぞれ `承認者名` と `approver-name`としています。

その他、Fieldに入力するデータ型の指定、入力規則の指定やデフォルト値の設定、必須入力にするかといった各種設定が行えますので、必要に応じてこれらを設定します。

設定が完了したら、「Save」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/98c67492-63a9-a5d8-73b1-8c5460476770.png)

6\. 同様に4, 5の手順を繰り返し、以下のFieldを作成していきます。「Type」は入力するデータ型の指定になります。

<table>
  <thead>
    <tr>
      <th>Display Name</th> <th>Field Reference Name</th> <th>Type</th>
    </tr>
  </thead>
  <tr>
    <td> 申請する作業内容 </td> <td>request-detail</td> <td>Long Text</td>
  </tr>
  <tr>
    <td> 作業手順書 </td> <td>work-procedure</td> <td>File</td>
  </tr>
</table>

7\. Fieldの追加が完了したら、Workflow編集画面の右上の「Test」をクリックすると、Formの画面イメージを確認できます。以下のように「承認者名」「申請する作業内容」「作業手順書」の3つの入力項目が表示されていればOKです。

![img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/7d66f241-ad48-2e5a-b0ba-9b6b03e86d0a.png)

### Action の追加

1\. 次に、申請をTaskとして承認者に通知し、Workflowを回すためのActionを追加していきます。Workflow編集画面の一番下にある「+ Add an Action」をクリックします。

![img2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/7db92a5b-9c5d-ecc9-a7a1-99f1617a2304.png)

2\. Actionの入力欄に`Request Approval`と入力すると、その下にActionの設定項目が表示されます。

「Action Type」は、Actionの入力内容に応じてWorkflow Automationが自動的に最適なAction Typeを判断して選択されますが、任意のAction Typeを選択し直すこともできます。「Action Type」には豊富なアクションが用意されており、データ編集や外部ツールとのデータ連携、Excelの操作、別のWorkflowの呼び出しなど、様々な操作を行うことが可能です。

https://help.catalytic.com/topics/actions/

ここでは、人に承認を依頼したいので、`Assign Task to a person`が選択されていることを確認します（選択されていなければ、手動で選択してください）。

![img2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/a026d7e8-5dfb-4603-b102-52ca986a763c.png)

3\. 「Assigned to」に、Taskとして割り当てて通知したいユーザーを指定します。

By Nameで特定のユーザーを指定することもできますが、申請者によって承認依頼先は異なることが想定されますので、このWorkflowでは、上の手順で作成した「承認者」Fieldに入力された名前を使用するようにしたいと思います。画面右上の「Global Fields」をクリックし、一覧から「承認者名」をクリックします。

すると、Field名がクリップボードにコピーされますので、「Assigned to」の入力欄にペーストします。`{{approver-name}}`というFiled名が挿入されたことを確認します。

![img3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/b92dc49d-0ed2-ecb7-8187-5577ee43e5fd.png)

4\. 「Instructions」に、承認者に依頼したい対応内容を以下のように入力します。

青でハイライトしている部分は、承認依頼のTask送信時に実際の申請内容に置き換えられる部分になります。この指定方法は、「Insert a Field Reference」をクリックして、上の手順で定義したFieldを一覧から選択することで、カーソルのある場所に挿入されます。

![img4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/e41a4a65-6905-992e-eb25-fdb17d62580e.png)

5\. 「Form Fields」の「＋ Add a Field」をクリックし、承認者からのコメントを入力する欄を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/9e0b5d11-6aa2-55f7-fc9f-bfb96815ce20.png)

6\. 表示されたダイアログ画面で、以下赤く囲んだ各項目を入力および設定し、「Save」をクリックします。

![img6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/36d0615a-f152-6b47-92c1-0465ea7dbc02.png)

7\. Workflow編集画面の「Save」をクリックし、Actionの設定を保存します。

![img7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/744fd782-8ca0-6b45-5b80-87e03efabf28.png)

1から7までの手順を繰り返すことで、複数のActionを作成し、複雑な処理を行うWorkflowを作成することが可能です。本記事ではシンプルな申請承認Workflowを作成することが目的なので、これでWorkflowは完成とします。

### 作成したWorkflowのテスト

最後にテストを行って、想定通りにWorkflowが動作するかを確認してみます。

1\. Workflow編集画面にて、右上の「Test」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/63a7db65-1da2-5db2-a5ce-f1a68d72a54e.png)

2\. 作成した申請者用のFormの画面が表示されます。以下のように申請内容を入力し、「Start」をクリックします。「Name」と「Select how you want to test」はデフォルトのままで構いません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/10016339-0e9c-d377-c494-91400d67ee5f.png)

3\. 申請が送信され、Formで指定した承認者にTaskとして通知されます。ここでは自分自身にTaskを送信するようにしているため、すぐに承認者のTask通知画面が表示されますので、「Request Approval (TEST)」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/12ed1edb-324a-64d3-f88b-367b6397b682.png)

4\. 以下のようにTaskの詳細画面が表示されます。「承認しますか？」で`はい`または`いいえ`を選択し、右上の「Complete」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/ee796c8e-8f69-70b8-6664-8b20f583281a.png)

5\. StatusがCompleteに変わり、無事にテストが完了しました。必要に応じて、Workflow編集画面に戻って設定を変更し、Workflowを完成させます。

![img8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3951265/df7f3c54-79c2-bdb0-5403-7681b4b3fe4c.png)

作成したWorkflowは、公開および実行可の設定になっていれば、他のユーザーからも参照したり実行したりすることが可能ですので、実際の申請承認プロセスに乗せてすぐに使用できる状態となります。

# まとめ

本記事では、PagerDuty Automationの一翼を担うWorkflow Automationの機能を使って、シンプルな申請承認Workflowを作成しました。

Action Typeの手順のところでも触れましたが、外部のSaaSなどのクラウドサービスと連携したWorkflowを作成したり、受信したメールからデータを取り込んだり、ファイルのインポート、正規化されたデータ操作といったこともWorkflowの中で行うことが可能です。

特にコーディング等も不要で、インシデント管理以外でも日々の運用業務を多少なりとも自動化することができそうだ、という感触を持っていただければ幸いです。

未だ自動化の進んでいないIT運用の現場を大きく変えるポテンシャルを持つ、PagerDuty Automationの今後にご期待ください。