Azure Automation Runbookで実行時間制限
Azure Automationに、RunbookというPowerShell、PowerShell ワークフローをスケジュールに合わせて実行する事が出来る機能があります。
このRunbookを使うと、Azure VMの再起動をスケジュール実行させるなどが簡単に設定できます。
しかし、Runbookスケジュール実行させる場合、Runbookの障害で実行時間が遅延し予期せぬ時間帯に実行されるケースがあります。
予期せぬ時間帯にRunbookが実行される事象を防ぐためには、Rubbook内で実行時間を制限することが1つの対策となります。
今回は下記サイトを参考にAzure VMの起動Runbookで時間制限を試してみました。またその前段としてRunbookのスケジュール設定も併せて試してみました。
https://docs.microsoft.com/ja-jp/azure/automation/automation-runbook-execution
Automationアカウント作成やAzure VMの起動停止についてはこちらの記事に記載しております。
Azure PortalでAutomationアカウントのRunbookスケジュール設定
Runbookのスケジュール設定は以下の2つの手順になります。
-
-
- Automationアカウントでのスケジュール作成
- Runbookへのスケジュール割り当て
-
まず最初にスケジュール作成を行います。
スケジュールのメニューを選択すると下記画面が表示されますので、スケジュールの追加を選択します。
新しいスケジュールのポップアップが表示されますので、設定を行います。保存すればスケジュール作成は完了です。
次に、Runbookへのスケジュール割り当てを行います。
スケジュールの割り当てを行うRunbookを選択すると下記画面が表示されますので、スケジュールへのリンクをクリックします。
Runbookのスケジュール作成画面が表示されますので、スケジュールを選択します。
作成したスケジュールを選択すれば、スケジュール設定は完了です。
平日のみ実行するスケジュール作成についてはこちらの記事に記載しています。
Azure VM起動 Runbookの実行時間を制限
今回は1つの例としてサーバ再起動のRunbookを作成してみました。9時から18時の間はRunbookが実行されないような設定にしています。
AddHours(9)で日本時間に合わせて、9時間追加してます。
$JST.Hour -lt 9で9時より前(8時59分以前)、$JST.Hour -gt 18で18時より後(18時01分以降)を指定しています。
8時59分時以前もしくは、18時01分以降なら実行という設定、つまり9時から18時の間は実行されないという設定が実現できます。
#Runbookサーバ再起動 Import-Module Az.Compute #再起動対象の仮想マシンが属する、リソースグループ名 #再起動する仮想マシン名 # 認証 $Conn = Get-AutomationConnection -Name AzureRunAsConnection # 時間指定 # 実行する処理 } |
※なお、AutomationアカウントのソリューションにVM起動停止のソリューションが存在します。