Azure Automation は、PowerShell ベースの Runbook を実行することで、Azure 環境の作成や展開を自動化することができます。Azure Virtual Machines の起動と停止をスケジュールで自動化するシナリオを試してみました。こちらのブログを参考にしましたので、内容はほとんど同じです。
Azure に認証する証明書を登録する
Azure PowerShell を使うので、認証の準備として証明書が必要です。自己署名の証明書でも大丈夫なので、makecert コマンドで作成します。
#makecert makecert -r -pe -n CN=azure-test -sky exchange azure-test.cer -sv azure-test.pvk pvk2pfx -pvk azure-test.pvk -spc azure-test.cer -pfx azure-test.pfx -pi password
上記のコマンドで作成された証明書(azure-test.cer)は、管理ポータルから管理用証明書としてアップロードしておきます。
Automation Account の作成
管理ポータルから、Automation のアカウントを作成します。今はまだプレビュー版なので、選択可能なデータセンターは East US のみです。
Assets の作成
Runbook で Azure PowerShell を使うため、認証周りの情報を Assets に登録します。Assets には、いくつか種類がありますが、CREDENTIAL を選択して、証明書(azure-test.pfx)をアップロードします。Credential Type で「Certificate」を選択し、「azure-cert」という名前で登録します。
次に、VARIABLE を選択して、認証に必要な情報を登録します。
- CertificateName:azure-cert
- SubscriptionID:サブスクリプションID
- SubscriptionName:サブスクリプション名
Variable Type で「String」を選択し、NAME と VALUE を登録します。
Runbook の作成
Azure Virtual Machines を起動する Runbook は、次のようなスクリプトファイル(.ps1)を作成します。
#Runbook workflow AzureVM-Start { Param ( [parameter(Mandatory=$true)] [String] $VMName, [parameter(Mandatory=$true)] [String] $ServiceName ) $subscriptionName = Get-AutomationVariable -Name "SubscriptionName" $subscriptionID = Get-AutomationVariable -Name "SubscriptionID" $certificateName = Get-AutomationVariable -Name "CertificateName" $certificate = Get-AutomationCertificate -Name $certificateName Set-AzureSubscription -SubscriptionName $subscriptionName -SubscriptionId $subscriptionID -Certificate $certificate Select-AzureSubscription $subscriptionName Start-AzureVM -Name $VMName -ServiceName $ServiceName }
Azure Virtual Machines を停止する Runbook は、コマンドの「Start-AzureVM」が「Stop-AzureVM」に変わるだけです。
#Runbook Stop-AzureVM -Name $VMName -ServiceName $ServiceName -Force
上記の2つのスクリプトファイルをインポートしたら、Author タブから Publish しておきます。
Schedule の作成
今回は、毎日AM9:00に起動し、PM17:00に停止するスケジュールを自動化します。Azure Virtual Machines を起動する Runbook に、スケジュールを登録します。
PowerShell の Start-AzureVM コマンドの引数に必要な ServiceName と VMName を指定します。
Azure Virtual Machines を停止する Runbook にも、同様にスケジュールを登録します。
結果確認
Runbook の Job を確認すると、スケジュール通りに Azure Virtual Machines を起動できたことが分かります。
まとめ
今はまだプレビュー版なので、Azure のモジュールしかありませんが、オンプレミスの System Center の Orchestrator のようにモジュールが増えれば、カバーできるシナリオの幅が広がりそうです。運用に限らず、テストや動作確認でもクラウド環境の作成や展開を自動化していくうえで、Azure Automation は活用できそうなサービスです。