【Azure Update Manager】事前イベントでメンテナンスをキャンセルする

はじめに

事前イベントとは?

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および事前イベントの利用の参考になれば幸いです。

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

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください