October 7, 2016

SlackとAzure FunctionsでChatOpsする

Azure Functionsでやってみよう Azure上でChatOpsしたい、と相談をいただきました。 AzureでChatOpsと言えば、Auth0のSandrino Di Mattia氏が作った素敵なサンプルがあります。 素晴らしい。これで十分、という気もしますが、実装のバリエーションがあったほうが後々参考になる人も多いかなと思い、Web App/Web JobをAzure Functionsで置き換えてみました。 SlackからRunbookを実行できて、何がうれしいか 誰がいつ、どんな文脈でRunbookを実行したかを可視化する CLIやAPIをRunbookで隠蔽し、おぼえることを減らす CLIやAPIをRunbookで隠蔽し、できることを制限する ブツ Githubに上げておきました。 AZChatOpsSample おおまかな流れ 手順書つらいのでポイントだけ。 SlackのSlash CommandとIncoming Webhookを作る 流れは氏の元ネタと同じ ARM TemplateでFunction Appをデプロイ Github上のDeployボタンからでもいいですが、パラメータファイルを作っておけばCLIで楽に繰り返せます パラメータファイルのサンプルはsample.azuredeploy.parameters.jsonです。GUIでデプロイするにしても、パラメータの意味を理解するためにざっと読むと幸せになれると思います Function AppのデプロイはGithubからのCIです。クローンしたリポジトリとブランチを指定してください GithubからのCIは、はじめてのケースを考慮しARM Templateのリソースプロパティ”IsManualIntegration”をtrueにしています Azure Automationのジョブ実行権限を持つサービスプリンシパルが必要です (パラメータ SUBSCRIPTION_ID、TENANT_ID、CLIENT_ID、CLIENT_SECRET で指定) Azure Automationについて詳しく説明しませんが、Slackから呼び出すRunbookを準備しておいてください。そのAutomationアカウントと所属するリソースグループを指定します 作成済みのSlack関連パラメータを指定します ARM Templateデプロイ後にkuduのデプロイメントスクリプトが走るので、しばし待つ(Function Appの設定->継続的インテグレーションの構成から進捗が見えます) デプロイ後、Slash Commandで呼び出すhttptrigger function(postJob)のtokenを変更 kuduでdata/Functions/secrets/postJob.jsonの値を、Slackが生成したSlash Commandのtokenに書き換え Slack上で、Slash Commandのリクエスト先URLを変更 (例: https://yourchatops.azurewebsites.net/api/postJob?code=TokenTokenToken) Read more

© Copyright 2019 Toru Makabe

Powered by Hugo & Kiss.