Azure AutomationアカウントのRunbook(PowerShell)で実行時間制限をやってみた
Azure AutomationアカウントはPowerShell等を利用して運用業務を自動化するサービスになります。
Azure Automationアカウントではプロセスを実行できるRunbookが使えます。
Azure Automation での Runbook の実行
このRunbookを使うとPowerShellを使ったスクリプト等を実行する事が出来ます。Runbookはスケジュール設定やWebhookで呼び出す事により実行させることが出来ます。
スケジュール実行させた場合にAzure障害の影響でスケジュール遅延しRunbookが予期せぬ時間帯に実行されるケースがあります。
予期せぬ時間帯にRunbookが実行されても処理が実行されないように設定しておくことが1つの対策となります。
今回はRunbook(PowerShell)内で仮想マシン起動処理が特定時間に実行されないようにしてみました。
Automationアカウント作成やAzure VMの起動停止についてはこちらの記事に記載しております。
※2021年12月に記事を更新しました。
Runbook内で実行時間を制限
前回記事で作成した仮想マシン起動のRunbookを流用しRunbook内で処理が実行されないように制限してみました。
Runbookがいつの時間帯に実行されても9時から18時の間は仮想マシンを起動しない設定としています。
実行時間制限をif文で条件判断させる
今回実施した内容はこちらの通りになります。
-
-
- Get-Dateで時刻を取得したものにAddHours(9)として9時間プラスして、$JSTとして日本時間を定義。
- if文の中で9時より前か18時以降の場合にtrueとなるよう指定する。
-
Runbook自体を実行されないようにするのではなく、Runbookがいつ実行されても良いように設定しています。
9時から18時の間は仮想マシンを起動しないようにしてみる
前回記事で設定したようにRunbookのシステム割り当てマネージドIDで仮想マシンの起動停止権限を割り当てた環境で実施します。
Runbookを実行して仮想マシンが起動するかを確認
Runbookを実行してみて仮想マシンが起動するかどうか確認してみます。
Runbook実行結果 | |
9時から17時の間に実行すると完了になりますが、起動してはいけない時間帯ですと表示され仮想マシンの起動は行われません。 | ![]() |
時間指定部分を変更して仮想マシンが起動されるか確認してみます。 17時以前もしくは18時以降なら処理が実行されるようにしてみました。 |
![]() |
再度実行してみるとVMを起動しましたよとメッセージが表示されました。 仮想マシンを確認してみると実行中になっている事も確認出来ました。 |
![]() |
最後に
if文を追加するだけで、不用意な時間帯にRunbookが実行されても処理自体が実行されないようにる事が出来ました。ひと手間を加えるだけで運用時の安全性が上がるので結構良いかなと思いました。