Jamf Proからの通知をSlackで受け取る方法を考えました。
このブログは、コーポレートエンジニアSlackのAdvent Calendarの第一弾です。 12/1 のトップバッターさせていただきます。明日は、enpipiさんです。
このブログを書こうと思ったきっかけは、日本語の記事を見かけなかったので、記録のためアウトプットさせていただきます。
このエントリーを閲覧したということは、皆さんJamf Proは知ってるよね。Apple製品のMDMツールとしては、今やデファクト・スタンダードな立ち位置の製品です。
このブログは、Jamf Proを知っていて既に利用している。 もしくはこれから利用しようとしている人向けです。
Jamf とSlackのインテグレーション
残念な事に、JamfとしてSlackとのインテグレーションを正式にはサポートしていません。( 2020年12月現在)
なぜSlackに通知したいのか?
Slackのチームチャンネルに通知することで、チーム全体で問題を発生した事を認知し、各々の対応内容を見える化することができます。
また、イベントが発生したときの検索可能な過去事例を得る事ができます。
Jamfの通知機能
一旦、Jamf Proが持ってる方法としては、以下の2種類でした。
- Webhookによる通知
- メールによる通知
それぞれのパターンで、使い所を紹介したいと思います。
Jamfからのメール通知をSlackに流す。
この方式を採用した理由としては、
- Jamf の変更影響を受けにくい(継続容易性が担保できる)
- 他にサーバや、カスタムアプリを作る必要がない。
で、同じ様な事を考えてる人がいたので参考にしました。
彼のBlogでは、Slackのメールアプリを使って通知を流す方法を採用していました。この方式だと通知を確認したい場合、通知がある度に毎回一度はクリックが必要になるため、大量の通知があった時に面倒です。
また、テキスト検索することもできないので、そんなに良い体験になりません。
Zapierを使って、JamfからのメールをSlackに通知させる。
と、いう事で、Zapierを組み合わせて、テキストメッセージとして、Slackへ送信するようにしようと考えました。
処理の流れ
- Zapierのメールアプリを使って、メールアドレスを払い出す。
- Jamf Pro でメール通知専用のユーザを作成し、上記のメールアドレスを設定する。
- Zapier側でその後のアクションを設定する。
実際の設定について
事前作業
メールサーバーの設定
Jamf Pro では、クラウドサービスであったとしても自身でメールサーバーを別途立ち上げて、設定する必要があります。
メールサーバーの設定については、同じコミュニティーでお世話になっている「世界の吉田さん」のブログを参考にするとシュッとできると思います。
Step. 1 : Zapier の Email by Zapier を設定する
Email by Zapierを選択します。この次のステップで、専用のZapierメールアドレスが払い出します。
Step. 2 : Jamf Pro のアカウント作成と通知の設定
上記のメールアドレスを設定したアカウントを一つ作成します。権限は何も付与しなくても大丈夫です。
その後、「通知設定」は各アカウント毎に設定します。
- 先程作成したアカウントでログインする
- 右上のアカウントのアイコンをクリック
- 通知をクリック
以下の様な画面になりますが、全てチェックしておくと良いと思います。
Step.3 : Zapier側にて、どのチャンネルにどういった内容で送信するか設定する。
簡単にこれだけ設定した。
通知後の世界
こんな感じな出来上がり。個人的には必要十分って感じ。ワンクリックで編集に飛ぶなどしたい場合は、Zapier側で作り込めば、大丈夫。
通知設定で見えてきたもの
ウチでよく使ってるのは、「ポリシーでエラー発生した時」、「スマートグループでの増減」の時の通知が便利です。
ポリシーでエラー発生した時
割と詳細なログがでるので、どこでコケてるのか把握できて、すぐに打ち手を打つ事ができるようになります。Big Sur の時は、このおかげでクィックに対応することができました。
スマートグループの増減
以下の様なグループで通知を受け取ってます。
- Big Sur にした人の通知
- FileVault暗号化できていないグループの通知
- 各アプリケーションをインストールできていない
など、皆さんが管理したいグループを構成して、その通知を受取ると良さそうです。
Webhookの使い所
弊社では現在のところ、以下二つのWebhookを使っています。
- ComputerAdded
- DeviceAddedToDEP
ComputerAdded
弊社では10月にJamfを導入したところなので、社員が使ってる現用機器はUser Initiated Enroll(以下、UIE)を順次行っています。
また、元々、スプレッドシートでシリアル番号と利用者を管理しました。
Webhookでは登録タイミングで通知を受け取る事ができます。そのPayloadの中には、シリアル番号を通知してくれます。
そのため、このWebhookをトリガーにして、スプレッドシートのシリアル番号を検索し、そのPCを”完了”と更新する事で、進捗確認しています。
DeviceAddedToDEP
PCを購入する機会が無く、まだ発火していないのですが、Appleや代理店からデバイス購入した後、JamfにDEP登録されるタイミングで通知されるのを期待しています。
この通知を受け取ることで、納品時期をいち早く知ることができることを期待しています。
その他の実装方法
Jamf Pro Notification Pluginを使って実装する。
Slackアタッチメントも設定されて、いい感じなメッセージを受け取る事ができそうでした。
この方式の特徴は
- カスタムなSlackアプリを作成する
- サーバを立てて、そこにコードをデプロイ
- そのエンドポイント向けにWebhookを投げるといい感じにSlackに通知
でした。
カスタムアプリを作るのも、サーバーを建てるのもそこまで苦ではないものの。Jamf側で何かWebhookの仕様が変更されたタイミングで必ず影響を受ける事が予想されるため、継続容易性が担保できる方式にしたかったので、今回は採用しませんでした。
参考になれば幸いです!