最近はAzure上で検証を行うことも多くなってきました。凄く便利なのですが、その代わりに課金のことを随分と気にしなくてはいけなくなります。これが結構ストレスなんですよね…。

そこで、とりあえず、特定サブスクリプション内の仮想マシンを毎日定時に強制シャットダウンしてしまうスクリプトをAzure Automationで定期実行することにしました。これでシャットダウンし忘れでもある程度安心ですね。

取り立てて難しいところは何もないですが、検索するとさくっとその目的に使えるものが以下にあったのでそれを流用させてもらうことになりました。

- [Q and A - TechNet Stop Azure Virtual Machine using Azure Automation Runbook](https://gallery.technet.microsoft.com/Stop-Azure-Virtual-Machine-0b1fea97/view/Discussions#content)

https://gist.github.com/ebibibi/b6b0c1ce51f42e9548a6

 

あとは、Azure Automation上への登録とスケジュール設定ですね。

image

 

image

 

image

 

とりあえずこれで、毎日深夜3時に全てのVMが停止されるようになりました。本当は例外処理を入れられるようにしたりなど必要ですが…。まずはこれで良いことにします。

2015/07/17追記

ごめんなさい。もともと公開していたコードだとジョブは成功するものの、正常にVMが停止しないことがわかりました。コードは修正してあります。具体的にはシンプルに以下のように全VMを取得~停止させてしまうロジックにしました。これで正常に停止されることを確認しました。

Get-AzureVM | Stop-AzureVM -Force