以前以下のようなブログを書きました。
最近は、Adminaの機能も大分使えるようになってきていて&デバイスAPIも充実してきているので、そろそろAdminaに寄せようかなと思っています。
そこでまずADEに登録されたタイミングでSNIPE-ITではなくAdminaへのデバイス登録ができるかを確認しました。
今回利用したもの
- Zapier有料版
(以前はLambdaを利用したのですが、Zapierが色々と使いやすくなったので、iPaaSで今回はやりました) - Jamf Pro
- Moneyfoward Admina
設定
AdminaでAPIキーを発行する
- Adminaに管理者としてログインします。
- 「設定」→「APIキー一覧」→【APIキーを作成する】をクリックします。
- APIキー名にわかりやすい名前をつけ、【生成する】をクリックします。
- APIキーが生成されるので、パスワードマネージャー等に控えておきます。
Zapier設定
全体ブロックとしてこれだけです。
一つづつ分解していきます。
Webhookを受信する
そのままです。
Webhook for Zapierを利用して、Jamf ProのADEに登録されたら送信されてくるJSONをここで受け取ります。
Webhookで送信されてくるJSONサンプルは公式ページにあります。
今日の日付を取得する
ADEの登録日=購入日ではないですが、ほぼほぼニアリーイコールなはずなので、今日の日付を購入日に入れるために、Zapが動作した日付を取得しています。
Formatter by Zapierを利用して、以下のように定義します。
Inputには、zap_meta_human_now を利用して現在の日時を取得しています。
AdminaのAPIリファレンスを確認すると、日付登録は、YYYY-MM-DD 形式のためTo Formatでその形に変換します。
2年後の日付を取得する
弊社はリース2年契約のため、2年後の日付を計算して返却予定日に入れてしまいます。
こちらも完全一致はしませんが、ある程度の指標としては利用できると思いますのでこのタイミングで自動的に入れてしまいます。
手動で後からだと絶対抜け漏れるから・・・。
Zapierだと簡単に2年後の日付も取得することができます。
同じように、Formatter by Zapier を利用し、Expressionに +2 years
とするだけです。便利
Adminaへデバイスを登録する
AdminaのREST APIを叩いてAdminaへlaptop_pcデバイスとして登録します。
リファレンスは公式リファレンスをご参照ください。
Webhook by ZapierのCustom Requestを利用します。
力業感はありますが、簡単にできるので良しとします(笑)
ヘッダー情報に、事前に発行したAdminaのAPIキー等をセットします。
APIキーの設定方法もっといいやり方があるような気はするのですが、ひとまずこれで動くかを確認します。
登録されたことをSlackで通知する
登録されたことがわからないと、資産名の変更やユーザー割り当てができないので、登録されたら通知をして気づけるようにします。
ZapierにSlackコネクタがあるので、ここは簡単ですね。
Send Channel Message eventを設定します。
前のステップで登録された結果のIDを持ってきてURLに連結させます。
通知を行いたいSlackにAdminaのスタンプを登録しておくと、アイコンとして利用可能になりそれっぽく見えるので登録しておくといいと思います。
その他のオプションはお好みで設定しましょう。
Jamf ProでWebhookの設定をする
最後にJamf ProのWebhookの設定をします。
- Jamf Proにログインします。
- 「設定」→検索ボックスに、webhookと入力→【Webhook】をクリックします。
- 右側にある【新規】をクリックします。
- 表示名にわかりやすい名前を入力し、[WebhookのURL]欄に、Zapierで発行されたURLを入力します。
認証タイプは、「なし」にしてとりあえずテストしますが、不正なリクエストを受け付けないためにも、設定をしZapier側で処理を続行しても問題ないかの確認フローを入れることをおすすめします。
- コンテンツタイプで、「JSON」を選択し、Webhookイベントから「DeviceAddedToDEP」を選択します。
- 右下にある【保存】をクリックして保存します。
テストする
直近で購入等ある場合には、そちらを待ってもいいかもしれませんが、すぐテストしたいのでPostmanを利用してJSONをZapierのWebhook URLにPOSTメソッドで送ってみます。
以下のようなJSONをBodyに入力します。
{
"event": {
"assetTag": "SHISAN-NO",
"description": "SHISAN",
"deviceAssignedDate": 100,
"deviceEnrollmentProgramInstanceId": 100,
"model": "MBP14",
"serialNumber": "SERIAL-12345678"
},
"webhook": {
"eventTimestamp": 1735114788,
"id": 10,
"name": "DEVICENAME",
"webhookEvent": "DeviceAddedToDEP"
}
}
JSONで送信するので、application/content-typeをapplication/json と設定しておきます。
設定をしたら、【Send】をクリックし、statusがsuccessで返ってきていることを確認します。
Slackへの通知確認
しばらくするとSlackにも通知されてきます。
このあと実際にADE登録が6台くらいされて来たときに、何がなんだかわからなかったので、シリアル番号や型番も通知されるように改修しました。
Adminaへの登録確認
Slackに通知されたURLをクリックして、詳細を確認してみます。
少し下にスクロールすると、基本情報や調達情報があります。
無事にデータが登録されていますね。返却予定日もちゃんと2年後になっています。
まとめ
台帳を常に最新にしておくというのは非常に大事な作業なのですが、人間めんどくさいことはやりたくない&クリティカルでない作業は後回しにしてしまうものです。
なるべく自動的に台帳化をしてしまい、定期的な棚卸しで綺麗にしていくのがいいかもしれません。
Windows AutopilotもWebhook飛ばせるようになってほしいですね。
Adminaを起点にAPIを利用してスプシ等に定期的に出力して、Looker Studioで見やすくしようかなと思っています。
Adminaさんに色々要望を出しているので、SNIPE-ITみたいに色々登録できるようになるといいなと期待しています!