はじめに
Azure Update Manager(以下AUM)とは、Azure VMおよびオンプレミスサーバーに対して、更新プログラムを一元管理・自動適用するサービスです。
AUMには、更新プログラム適用の前後に処理を実行する、事前イベント/事後イベントという機能があります。
本記事では、事前イベント/事後イベントでRunbookを実行して、その結果を確認するまでの流れを紹介します。
構成図
事前イベント/事後イベントの構成に必要なリソースの関係性を図にしてみました。
AUMで自動更新を行う際、メンテナンス構成というリソースを作成します。
メンテナンス構成は、自動更新に関する設定のまとまりです。次のような内容を設定できます。
- 更新の対象とするサーバー
- 更新のタイミング/繰り返し
- 適用する更新プログラム
- 事前イベント/事後イベント
本記事では、事前イベント/事後イベントそれぞれでWebhookを叩いてRunbookを実行します。
この「事前イベント(事後イベント)をきっかけにWebhookを叩く」という流れを制御してくれるのがイベントサブスクリプションです。
本記事では、更新の対象とするVMにタグを付与する処理を行います。事前イベントでは「AUM:Updating」というタグを付与して、事後イベントでは「AUM:Updated」というタグに更新します。

手順
ここからは、事前イベント/事後イベントを構成して、その処理結果を確認する手順を紹介していきます。
ゼロから書くとボリュームが大きくなってしまうので、以下を前提としています。
- サブスクリプション内にメンテナンス構成の対象とするVMが存在すること
- 事前イベント/事後イベントで使用するRunbookが作成済みであること
1. Webhookを作成する
事前イベントで使うRunbookを開いて「Webhookの追加」を押します。

以下の設定をした上で、URLを控えて「作成」を押します。
このURLは、後ほど事前イベントの設定をする時に使用します。
Webhook作成後に再び確認することはできないので注意してください。
- Webhookの名前を入力する
- 有効期限を設定する
- 「パラメーターと実行設定を構成する」より、パラメーターが存在する場合は入力する

事後イベントで使うRunbookについても同じ手順で、Webhookを準備します。
こちらのURLも控えてきます。
2. メンテナンス構成を作成する
AUMのページから「スケジュールの更新」を押して、メンテナンス構成を作成していきます。

メンテナンス構成を作成する画面に遷移します。基本情報、リソース、動的スコープ、、、とタブがいくつかあります。
「リソース」あるいは「動的スコープ」のタブにて、対象のサーバーを指定します。今回は「vm-yoneyama-test01」というVMを指定しています。
「イベント」のタブから事前イベント/事後イベントを構成します。他のタブについては任意の設定を行ってください。
「イベント」のタブにて「イベントサブスクリプションの追加」を押します。

以下の設定をします。先ほど控えたURLを使用します。
- 名前:事前イベント用イベントサブスクリプションのリソース名
- イベントスキーマ:「Event Gridスキーマ」
- システムトピック名:システムトピックのリソース名(事前イベント・事後イベント共通)
- イベントの種類:「メンテナンス前のイベント」
- エンドポイントの種類:「Webhook」
- エンドポイント:事前イベント用WebhookのURL

続いて、事後イベント用のイベントサブスクリプションを作成します。以下の設定をします。
- 名前:事前イベント用イベントサブスクリプションのリソース名
- イベントスキーマ:「Event Gridスキーマ」
- イベントの種類:「メンテナンス後のイベント」
- エンドポイントの種類:「Webhook」
- エンドポイント:事後イベント用WebhookのURL

2つのイベントサブスクリプションを追加し終えたら、他の設定をよしなに行ってメンテナンス構成を作成してください。
3. 結果を確認する
事前イベントはメンテナンスの30分前から40分前に開始されます。
そのタイミングで、メンテナンス構成の「履歴」にてメンテナンス実行IDが表示され、それをクリックするとそのメンテナンスの詳細を見ることができます。
事前イベント/事後イベントの結果は、このページから、Runbookのジョブのページに遷移することで確認します。
手順としては、まずメンテナンス実行IDの状態(赤枠)をクリックします。

遷移後の画面にて、下にスクロールします。
タブを「マシンの合計」から「イベント」に切り替えて「履歴の表示」を押します。

「履歴の表示」を押した後、よしなに進んで行くとRunbookのジョブを確認することができます。

この手順をベースに、事前イベント/事後イベントの結果を確認していきます。
3-1. 事前イベント
繰り返しとなりますが、事前イベントではVMにタグ「AUM:Updating」を付与する処理、事後イベントではこのタグを「AUM:Updated」に更新する処理を実装しています。
また、Runbookのジョブで実行内容を確認できるよう、ログ出力を行うようにしています。
では実際に事前イベントの実行結果を見てみましょう。ログを確認すると、
- Azure・サブスクリプションへの接続
- VMの取得
- VMにタグ「AUM:Updating」を付与
と、処理がきちんと行われていることが分かります。

実際にVMを見てみると、タグが付与されています。

3-2. 事後イベント
メンテナンスが完了し、事後イベントが実行されました。
同じく結果を見てみます。ログを確認すると、
- Azure・サブスクリプションへの接続
- VMの取得
- VMにタグ「AUM:Updated」を付与
と、こちらも処理がきちんと行われていることが分かります。

実際にVMを見てみると、タグの値が更新されています。

実用的なシナリオ
今回はRunbookにて、VMのタグを編集する処理を実装しましたが、もちろんRunbookの内容次第で様々な処理を行うことができます。
具体的なユースケースとしては、以下のようなものが考えられます。
- 更新前にVMの電源状態を確認し、停止しているものを起動する
- VM内のサービスを更新前に停止し、更新後に起動する
- メンテナンス開始前および終了後に通知を送信する

(←参考になった場合はハートマークを押して評価お願いします)