Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Azure Automation その2

前回に続いてAzure Automationの話です。今回は、Automationのスクリプトから特定のサブスクリプションVM情報を取得するところまでやってみたいと思います。

必要なもの

必要なものは以下

  • AutomationのPreviewを申し込んでください。
  • 管理証明書(CERとPFX)。CERは、操作対象サブスクリプションの管理ポータルから登録しておく必要があります。

Automation アカウントの作成

管理ポータルから、Automationアカウントを作成します。現在のところRegionは米国東部固定です。適当なアカウント名を入れてOKします。

f:id:StateMachine:20140709202033p:plain

作成すると既にAzureと言う名前のアセットが登録されていまが、これはAzure PowerShell Cmdletのモジュールです。

f:id:StateMachine:20140709202209p:plain

アセットをクリックすると、使えるコマンド一覧が表示されます。

f:id:StateMachine:20140709202348p:plain

Connectionの追加

アセットから、Connectionを追加します。アセット画面下部から追加をクリックすると、以下のアセットを選ぶ画面が表示されるので、Add Connectionを選びます。

f:id:StateMachine:20140709202558p:plain

Connectionの登録画面が表示されます。NameとDescriptionは適宜設定してください。

f:id:StateMachine:20140709202743p:plain

Automation Certificate Nameには、次のステップで設定する証明書の名前を登録しておくと便利です。サブスクリプションIDは、当然操作対象のサブスクリプションIDを設定します(以下のIDはダミーです)

f:id:StateMachine:20140709203025p:plain

OKボタンを押してしばらくすると登録されます。

証明書の登録

次に証明書を追加します。先ほどと同様に追加から、Add Credentialを選びましょう。追加画面が表示されるので、TypeからCertificateをえらび、前述した通り同名の名前をつけます。

f:id:StateMachine:20140709203829p:plain

次にPFXの証明書をアップロードします。CERファイルもアップできるのですが、当然正しく接続できませんので、注意してください。

f:id:StateMachine:20140709203906p:plain

アセットの登録は以上です。

Runbookの追加

下部の追加から、Automation → Runbook → Quick Createを選び、適当に名前を入力します。

f:id:StateMachine:20140709204527p:plain

スクリプトの編集

作成したRunbookを選んで、Authorタブを開くとスクリプトを編集できます。PublishedとDraftの2 つ編集できるようですが、ここではDraftを編集します。

f:id:StateMachine:20140709204743p:plain

以下、該当サブスクリプションを選択し、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

以上