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