日本でのアトラシアン(Atlassian)製品導入No.1

  1. HOME

リックソフトブログ

2019/12/06

Slack から Jira Service Desk の障害報告チケットを起票

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Author

樋口 晃Akira Higuchi

樋口 晃

こんにちは。Atlassianのパートナー Ricksoft の樋口です。今年もアドベントカレンダーの季節がやって来ました。ここ数年は毎年参加させていただいています。去年のアドベントカレンダーを読み返してみると、もう1年たってしまったのかと思います。今年もあっという間の1年でした。今年から、リックソフトは Workato というサービスの取り扱いを開始し、さらに Slack のパートナーにもなりました。自分は新しいプロダクトに興奮しつつ Workato社、Slack社 の人と一緒に仕事をしたり、米国カリフォルニア州の Slack社、Workato 社に出張で訪問させて貰ったりしました。また最近は Atlassian User Group のお手伝いを以前よりもさせて貰うようになり、いろいろな方とお話できるので刺激を受けております。振り返ってみれば、今年は去年よりも楽しい1年でした。来年も、Atlassian + Workato + Slack でバリバリやって行きたいと思いますので、よろしくお願いいたします。

Slack と Jira Software, Jira Service Desk の連携

今年のアドベンドカレンダーでは、私が出会って5分で「これを使えば、あんな事もこんな事もできる。えっそんな事もできるの」と夢が膨らんでしまった Workato を利用して、 Slack と Jira の連携事例についてご紹介したいと思います。

Workato は、複数のサービス/アプリケーションを連携するCloudサービスで、いわゆる iPaaSソリューションです。他の製品よりも簡単に連携ができて、とくにSlack を利用した連携がおもしろいと思います。Workato を利用すれば、簡単な承認処理や申請などを、ユーザーはSlackの中からできてしまいます。

このブログではサーバー運用チームから相談を受けた内容に基づき、課題を解決するための Slack ボットを作ってみた例を記載します。それがどれ位の時間で実装できるかやってみましょう。

課題:サーバー の障害を Jira Service Desk チケットで作成するのが面倒

相談を受けた内容は

というものでした。障害対応は大変な作業なので、報告などの付随的な作業は少しでも簡単にしたいというのはもっともな話です。どこが大変なのか確認するために、現在の作業手順を聞いてみました。

  1. 障害発生を検知して作業を開始。障害報告が必要と認識された。
  2. サーバー運用の管理をしている Jira でサーバーのIDでチケットを検索し、顧客の連絡先の担当者名、Jira Service Desk 連絡先アカウント、会社名を取得する。
  3. 上記で取得した情報を元に Jira Service Desk のチケットを起票する。

というものでした。

運用担当の人は、2の「会社名」や「担当者名」を普段意識していないので、間違えてしまうか心配で何度も確認するのが面倒。また、サーバーのIDで課題を検索してもその課題に顧客の情報があるのではなく、親課題にあるというのも面倒。との事でした。運用情報を管理している Jira と Jira Service Desk が同じ インスタンスなら、最近 Atlassian に買収されることが決定した Automation for Jira などの Jira の自動化ツールで解決できますが、複数のインスタンスとなると Workato の方が簡単だと思います。

子チケットの例

子チケットの例

親チケットのサンプル

親チケットのサンプル

解決策:Slack で サーバーのIDを入れたら、Jira Service Desk チケットを作成する

Workato で下記の Slack ボットを作ってみましょう。

  1. 運用担当者が Slack のスラッシュコマンドで ServerID を指定する。
  2. Workato のレシピが以下の作業を実施
    1. serverID で課題を検索 => 見つからなかった場合は Slack にエラーメッセージを表示して終了
    2. 見つかった課題の親課題を検索して、顧客名などの情報を取得
    3. Jira Sevice Desk に課題を作成する。
    4. Slackの画面作成した課題のリンクを表示
  3. 運用担当者が課題を確認する。

イメージは下記の様な感じです。

解決策:Slack で サーバーのIDを入れたら、Jira Service Desk チケットを作成する

実装:Workato でレシピを作る

上記の処理は、通常の Slack ボットでも作成する事ができますが、Workato を利用すると素早くできます。私は Workato に慣れているので、1時間程度で実装できました。実装した内容は下記の通りです。Workato は レシピというフローを作成する事で処理を実装します。

コネクションの設定

Workato でアプリと連携するためには、AppConnection というアプリケーションのコネクションを作成します。今回は情報の通り、3つのコネクションが必要です。下記は Jira に接続する場合のコネクションの設定画面です。設定するのは、URL、ユーザー名、パスワードだけです。Workato の接続用にアカウントを作成する事をお勧めします。Slack の場合は、Slackにアプリを導入する関係上ちょっと手間が増えますが、ウイザード形式で簡単に設定する事ができます。コネクションはレシピ別に設定するのではなく、一度設定してしまえば各レシピで利用できます。

コネクションの設定

レシピの作成1:トリガー設定

最初にレシピを起動するトリガーを定義します。今回は Slack からの起動なので、Slack の New commad を指定します。これで、Slack から workbot をメンションしてメッセージを送信する事で レシピを起動できるようになります。トリガーの中では、起動するコマンド名とパラメータを指定します。Slack のアプリと連携すれば、スラッシュコマンドとして実行する事もできます。

レシピの作成1:トリガー設定

パラメータとして、サーバーIDを定義します。

レシピの作成2:Jiraチケットの検索

レシピの作成2:Jiraチケットの検索

レシピ内には、トリガーにつづいて 処理を実装するためのアクションを定義します。アクションは複数定義する事ができます。最初に Jira の検索を実行します。その前に、検索の JQL を確認しておきます。JQLに不慣れな方は、通常のベーシック検索で検索して最後にアドバンスをクリックすれば、JQLに切り替ります。

レシピの作成2:Jiraチケットの検索

今回必要なJQLは下記のようになります。

project = INFRA AND issuetype = リソース管理 AND server-id ~ xyz-jira

Workato には JQL検索アクションが用意されているのでこれを利用すれば簡単に検索できます。上記のJQLでは、xyz-Jira とサーバーIDが指定されていますが、実際のレシピではSlackのパラメータで指定された値を挿入するので下記のように トリガーのデータピルから取得できます。

今回必要なJQL

トリガーとアクションを一つ定義すると、レシピとしては動くので試しに動かしてみます。検索はできるはずですので、実行してみましょう。今回は、infra create jsd-ticket というコマンドにしました。Workato ではコマンドは3個の単語にする事になっています、下記のように指定すると、サーバーIDの入力を求められます。ここで指定したメッセージは、トリガーのパラメータで指定したメッセージです。レシピでは検索するだけで、何も返していないので何も起こりません。

サーバーIDの入力

ですが、Workato の画面で見ると検索が成功しています。下記の通り、期待通りに子チケットを検索できています。parent のkey で親チケットのIDも取れています。

parent のkey で親チケットのID

また、検索ができなった場合のロジックも入れましょう。検索結果の件数により処理を分岐する様にします。分岐処理を追加する場合は、下記の+ボタンを押して、

分岐処理を追加する場合は、下記の+ボタン

Conditional を追加します。Conditional は 条件分岐のロジックです。この他に、Conditional with else や 繰り返しを実装する、Repeat action が有ります。

Conditional を追加

検索結果の List Size が 0 だった場合は検索できなかった事になるので、Jiraの検索の結果の「List Size」を使って条件を指定します。

Jiraの検索の結果の「List Size」を使って条件を指定

条件が成立した場合は、下記のように Slack にメッセージを表示して処理を中断するようにします。

Slack にメッセージを表示して処理を中断

テストしてみましょう。

テスト

期待通りですね。ここまでは順調です。

レシピ作成3:Jira親チケットの検索

次に親課題の情報を取得するために、Get Issue というアクションを追加します。このアクションに 親課題のキーを指定すれば簡単に見つかるはずです。親課題のキーは検索できているので、検索結果の中から選べるはずです。

レシピ作成3:Jira親チケットの検索

ですが、上記の 「Search Issue by JQL」 のデータピル(上記画面の赤枠の部分)の中に、parent に相当するものが有りません。どうやら、Workato は親チケットを取得する事を考慮してくれていない様です。ちょっとピンチな感じですが、大丈夫です。こういう時のために、Custom Action という REST API を直接呼んでしまう方法が有ります。Jira の検索をする REST API は下記のURLで取得できます。

REST API を直接呼ぶのですが、Workato は JSON データを解析してくれるのでそれ程大変ではありません。というよりも、Workato に出会う前に python でコーディングしていた頃と比べると、めちゃめちゃ簡単です。Jira のCustom Actionの設定画面は下記のようになっています。まずはURLとメソッド(この場合は Get) を指定します。

URLとメソッド(この場合は Get) を指定

サーバーからのアウトプット については、サンプルのJSONデータをペーストすればよいのです。下記の Use JSON ボタンを押すと、

Use JSON ボタンを押す

下記のエディタ画面が表示されます。ここに JSON データをコピペします。

 JSON データをコピペ

するとこうなるので、NEXT ボタンを押します。

NEXT ボタン

下記の通りに解析してくれますので、Generate Scheme を押します。

Generate Scheme

これで下記の通りスキーマーができます。これで親課題のキー(下記のグレーの下線部分)を取得できるようになりました。以降は Custom Action である事を意識する必要は有りません。

スキーマー

これで親課題のキーを取得できたので次のステップで、再度 Get Issue を実行して親課題の情報を取得できます。

Get Issue を実行

レシピの作成4:Jira Service Desk チケットの作成

これで課題の検索までできました。必要な情報の検索できましたので、この情報を元に Jira Service Desk にチケットを作ってみます。チケットの作成は、Create Issue アクションで実行できます。

Create Issue アクションで実行

上記のProject Issue type で、チケットを作成するプロジェクトと課題タイプを決めるのですが、Select from list と表示されている通りリストから選択する事ができます。Workato は 連携するアプリの情報を読んでくれるのでこの辺は楽です。そして、Summary が説明で Description が要約になります。その他の Jira のフィールドも指定できます。ここでは「要約」は固定の文字列。説明欄は、Jiraから取得した情報としています。ここで、reporter に Service Desk アカウントを指定する事もできるのですが、そうするとチケットを起票した時にユーザーに連絡が行ってしまいます。Workato ではひな形を作るだけにして、後で reporter を指定できる様に説明欄に Jira Service Desk アカウントを記載しておきます。

最後に、Slack にメッセージを出力します。下記のように Message text に固定のメッセージを出力して、作成したチケットのキー+要約を表示して、チケットへのリンクも提示するようにしました。

チケットへのリンクも提示

レシピ作成5:できあがり

これで完成しました。全体のフローは下記のようになります。

全体のフロー

各ステップに表示されている文言はステップコメントです。下記のように自由に入力する事ができますので、適宜入力してレシピを解りやすくできます。

適宜入力

試してみましょう

ここまででレシピができましたので、実行してみます。 Workato のボットユーザーである @workbot をメンションする事で実行できます。

@workbot をメンションする

おっと、エラーになってしまいました。こういう時は、recipe の job タブを開くとエラーの内容が確認できます。どうやら検索処理でエラーになっていました。

検索処理でエラー

レシピを開くと、たしかに検索文字列の最後の server_id が入っていません。どうやらこの記事の説明のためにスクショを取ったりしていて消してしまった様です。

検索文字列の最後の server_id が入っていません

これを修正して再度実行してみましょう。今後は成功しました。

再度実行

そして、Jira Service Desk のチケットもできています。

Jira Service Desk のチケット

最後に

上記の通りレシピができたので、インフラチームに見てもらいました。反応はとてもよく「すぐに使いたいです」と言われました。そしてレシピを見たら「これをベースにわたしたちで要件に合わせて修正できますね」と言われました。Workato のレシピ作りは簡単で楽しいです。そして成果がすぐに目に見えて、上記の通りエラーの時の原因究明も簡単です。今回は、workbot にメンションする形にしましたが、Slack の Slack Commands を利用すれば 、スラッシュコマンドで起動する事もできます。

エラーの時の原因究明も簡単

これから年末に向けてレシピをたくさん作りたいです。来年もよろしくお願いいたします。そしていつかは、アドベント レシピ カレンダーを作りたいです。

Workato

ご不明な点がございましたらお気軽にお問い合わせください。

お問い合わせ

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

アトラシアン製品の導入と活用を
成功させたいなら
リックソフトのサポートが
必要です。

サードパーティ製のアドオンもサポート

サードパーティ製のアドオンもサポート

RS標準サポート

アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのRS標準サポートではサポートします。

  • アトラシアン製品とサードパーティ製のアドオンとの事象の切り分け
  • 海外のアドオンベンダーとのやり取りを代行(日→英/英→日)

リックソフトのRS標準サポートは開発元が提供するサポート以上の価値があります。

サポートについて

ツールの活用を促進するアイテム

ツールの活用を促進するアイテム

各種ガイドブック

ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。

リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。

ガイドブックについて

価値あるツールの使い方

価値あるツールの使い方

研修・トレーニング

ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。

日本随一の生産性向上にも効果のある研修サービスです。

リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。

研修について

PAGE TOP