はじめに
事前イベントとは?
Azure Update Managerには、更新プログラム適用の前後に処理を実行する、事前イベント/事後イベントという機能があります。
事前イベント/事後イベントでは、例えば、AutomationアカウントのRunbookを実行することが可能です。
事前イベント/事後イベントの使い方については、以下の記事で詳しく解説しています。
【Azure Update Manager】事前イベント/事後イベントでRunbookを実行する
メンテナンスのキャンセルについて
事前イベントの処理が失敗した場合、後続のメンテナンスを中止したいケースがあると思います。
既定では、事前イベントが失敗してもメンテナンスは行われますが、事前イベント内で明示的にAPIへキャンセル要求を送信することで、メンテナンスを中止できます。
本記事では、事前イベントでRunbook(PowerShell)を実行することを想定して、メンテナンスをキャンセルする方法について解説します。
実際のコード
以下の処理で、メンテナンスをキャンセルできます。
【PowerShell】
# パラメーターの取得
param(
[Parameter(Mandatory = $false)]
[object]$WebhookData
)
# メンテナンスのキャンセル処理
$json = $WebhookData.RequestBody | ConvertFrom-Json
$uri = "https://management.azure.com$($json.id)?api-version=2023-09-01-preview"
$body = @{
properties = @{
status = "Cancel"
}
} | ConvertTo-Json -Depth 5
Invoke-AzRestMethod -Method PUT -Uri $uri -Payload $body
メンテナンスが始まると、メンテナンス実行IDが発行されます。メンテナンス実行IDの情報は変数 $WebhookData に含まれます。
なお、Webhook 作成時に変数 $WebhookData に値を入力する必要はありません。
Invoke-AzRestMethod コマンドを使用してAPIリクエストを送り、このメンテナンスのステータスを Cancel としています。
※ Automationアカウントに適切な権限が与えられていることを前提としています。
※ 上記の処理に加え、Azureおよびサブスクリプションへの接続処理も必要です。
※ “api-version=2023-09-01-preview”の箇所は更新される可能性があります。最新情報をご確認ください。
まとめ
事前イベントで実行したい処理の成功/失敗を判定し、失敗した場合に上記の処理を実行することで、条件に応じてメンテナンスを中止できます。
本記事が、Azure Update Managerおよび事前イベントの利用の参考になれば幸いです。

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