前回に続いてAzure Automationの話です。今回は、Automationのスクリプトから特定のサブスクリプションのVM情報を取得するところまでやってみたいと思います。
必要なもの
必要なものは以下
- AutomationのPreviewを申し込んでください。
- 管理証明書(CERとPFX)。CERは、操作対象サブスクリプションの管理ポータルから登録しておく必要があります。
Automation アカウントの作成
管理ポータルから、Automationアカウントを作成します。現在のところRegionは米国東部固定です。適当なアカウント名を入れてOKします。
作成すると既にAzureと言う名前のアセットが登録されていまが、これはAzure PowerShell Cmdletのモジュールです。
アセットをクリックすると、使えるコマンド一覧が表示されます。
Connectionの追加
アセットから、Connectionを追加します。アセット画面下部から追加をクリックすると、以下のアセットを選ぶ画面が表示されるので、Add Connectionを選びます。
Connectionの登録画面が表示されます。NameとDescriptionは適宜設定してください。
Automation Certificate Nameには、次のステップで設定する証明書の名前を登録しておくと便利です。サブスクリプションIDは、当然操作対象のサブスクリプションIDを設定します(以下のIDはダミーです)
OKボタンを押してしばらくすると登録されます。
証明書の登録
次に証明書を追加します。先ほどと同様に追加から、Add Credentialを選びましょう。追加画面が表示されるので、TypeからCertificateをえらび、前述した通り同名の名前をつけます。
次にPFXの証明書をアップロードします。CERファイルもアップできるのですが、当然正しく接続できませんので、注意してください。
アセットの登録は以上です。
Runbookの追加
下部の追加から、Automation → Runbook → Quick Createを選び、適当に名前を入力します。
スクリプトの編集
作成したRunbookを選んで、Authorタブを開くとスクリプトを編集できます。PublishedとDraftの2 つ編集できるようですが、ここではDraftを編集します。
以下、該当サブスクリプションを選択し、Get-AzureVMするまでのスクリプトサンプルです。Saveボタンを押して保存したあと、Testボタンを押せばスクリプトを実行できます。スクリプト実行までの時間を遅めなので、素早いレスポンスは期待できないので注意が必要。(繰り返しテストしたいときは、微妙にイラっとします)
workflow sample { $AzureConn = Get-AutomationConnection -Name "AzureConnection" $Certificate = Get-AutomationCertificate -Name $AzureConn.AutomationCertificateName $SubscriptionName = "FreeTrial" Set-AzureSubscription -SubscriptionName $SubscriptionName ` -SubscriptionId $AzureConn.SubscriptionID -Certificate $Certificate Select-AzureSubscription $SubscriptionName Get-AzureVM }
Get-AutomationConnection で、アセットに登録したAzure Connectionの情報を取得します。Get-AutomationCertificate で、証明書情報を取得しますが、証明書の名前は、Azure Connectionにて定義した証明書の名前をベースに取得しています。ベタに書いても問題ないですけども、こうしておくと紐付けられて便利かもしれません。
実行すると、OutputPaneに結果が表示されます。
雑感
Workflowがベースとなっているので、短いスクリプトを実行させるまで、だいぶ試行錯誤しました。あと、該当ドキュメントがあまりなくて、本格的に使うには苦労しそうな感じでした。
追加(おまけ)
Get-AzureVMで特定のVMを取得して、Start-AzureVMとかやれば、VMを起動することができます。うまくやれば、VMの起動停止をスケジューリングできるのではないでしょうか。
$vm = Get-AzureVM -ServiceName サービス名 -Name VM名 $vm | Start-AzureVM
以上