初めてのAzure Automation(Runbook使って仮想マシンを起動する方法)

2019-09-07Automation account,Azure,Runbook,Virtual Machines

初めてAzure Automationを利用する方向けに、Runbookを使って処理を自動化するまでの手順を紹介します。
AutomationアカウントやRunbookのリソース作成、マネージドIDの設定、Runbookの作成、テスト、公開までの一連の流れを順を追って確認しています。

PowerShellを使用して仮想マシン(Azure VM)を起動するRunbookを例に手順を確認しています
Runbookでパラメーターを利用する方法についても確認しています。

※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。

スポンサーリンク

Automationアカウントの概要、リソース作成手順、権限付与設定

Azure Automationアカウントとは

Azure Automationは、クラウドやオンプレミス環境にわたる自動化タスクを実行できる、Azure上で提供されているサービスです。
Azure Automationアカウントは、Azure Automationサービスを利用するためのAzure上のリソースです。

Azure Automation とは

Runbookを利用したプロセスの自動化や、構成管理、更新管理などの機能が提供されています。
構成管理では、Desired State Configuration(DSC)を使用したWindowsサーバーの構成管理や、変更管理などの機能が利用可能です。
Azure上の仮想マシンだけでなく、非Azure環境の仮想マシンやオンプレミスのサーバーも管理できます。

※Azure Automation Update Managementは廃止が予定されています。
※Azure Automation State Configurationは廃止が予定されています。

Runbookとは

Runbookは、実行する処理内容を記載したスクリプトです。
Azure Automationでは、プロセス自動化の機能として提供されています。
PowerShellやPythonなどを使用して、自動化されたワークフローを記述できます。

Azure Automation の Runbook の種類

AutomationアカウントにRunbookを作成して利用します。
1つのAutomationアカウントに対して、複数のRunbookを作成することが可能です。

Runbookは、スケジュール設定やWebhookを使って呼び出すことができます。
例えば、Azure Monitorのアラート通知時にWebhookを利用してRunbookを呼び出すことで、障害時の対応処理の自動化などにも活用できます。

Automationアカウントのリソースを作成

Azure Portalを使用してAutomationアカウントを作成します。
Automationアカウント名は"aa-test-01″としています。

スタンドアロン Azure Automation アカウントを作成する

Automationアカウントのリソースを作成
Automationアカウントのメニューで作成を選択します。 Azure Automationアカウントのメニュー画面で作成を選択

Automationアカウントの作成画面が表示されます。
リソースグループと地域を選択します。
Automationアカウント名を入力したら、次へ進みます。

Azure Automationアカウントの作成で基本タブを表示しインスタンスの詳細を設定

詳細設定画面です。
マネージドIDの設定を行います。
初期状態では"システム割り当て"が選択されています。
今回は、そのままシステム割り当てを選択して次へ進みます。

Azure Automationアカウントの作成で詳細設定タブを表示しマネージドIDを設定

ネットワーク設定画面です。
パブリックアクセスとプライベートアクセスのいずれかを選択します。
プライベートアクセスを選択する場合は、プライベートエンドポイントを利用します。
今回はパブリックアクセスで進めます。

 

Azure Automationアカウントの作成でネットワークタブを表示し接続の構成を設定
Azure Automationアカウントの作成でネットワークタブを表示し接続の構成でプライベートアクセスを選択した場合

確認画面です。
内容を確認し、問題がなければ作成を選択します。
これでAutomationアカウントのリソース作成は完了です。

Azure Automationアカウントの作成の確認および作成画面

AutomationアカウントにおけるマネージドIDとは?

一言で言うと、Runbookでリソースを操作するための権限を得るための設定です。

Azure AutomationアカウントでRunbookを実行する際、操作対象のリソースに対して認証が行われます。
その方法の一つとして、マネージドIDを利用する方法があります。

マネージドIDには、"システム割り当てマネージドID"と"ユーザー割り当てマネージドID"の2種類があります。

マネージドIDの種類
マネージドID(Azure Automation アカウントの認証の概要)

マネージドIDには、リソースに対する操作権限を割り当てます。
権限の割り当ては、操作対象のリソースで行います。

    • システム割り当てマネージドID
      • AutomationアカウントのマネージドIDに対して直接権限を付与する
    • ユーザー割り当てマネージドID
      • マネージドID自体のリソースを作成し権限を付与する
      • 権限を付与したユーザー割り当てマネージドIDをAutomationアカウントのリソースに割り当てる
      • 複数のAutomationアカウントに同じユーザー割り当てマネージドIDを共有して割り当てることができる

システム割り当てマネージドID使ってリソースの操作権限を付与

Automationアカウントのリソース作成時にシステム割り当てを選択すると、リソース作成と同時にシステム割り当てマネージドIDが作成されます。
システム割り当てマネージドIDを使って、Automationアカウントに仮想マシンの操作権限を付与できます。
マネージドIDの設定は、Automationアカウントのアカウント設定のIDで行います。

システム割り当てマネージドIDはRunbookに割り当てるのではなく、Automationアカウントに対して割り当てます。

※PowerShellを利用して権限を割り当てる方法もあります。

マネージド ID にアクセス許可を割り当てる

マネージドIDへのロール割り当て

AutomationアカウントでIDのリソースメニューを選択します。
システム割り当て済みのタブを選択します。
Azureロールの割り当てを選択します。

Azure AutomationアカウントでIDの設定を表示し、システム割り当て済みでアクセス許可設定をする
ロール割り当ての追加を選択します。
ロールの割り当てでは、スコープ、サブスクリプション、役割の選択を行います。
スコープはサブスクリプション、リソースグループ、Key Vault、ストレージ、SQLなどから選択可能です。
Azure Automationアカウントのシステム割り当て済みアクセス許可設定でAzureロールの割り当て設定をする
システム割り当て済みアクセス許可設定でAzureロールの割り当てスコープ設定対象一覧
リソースグループに対して仮想マシン共同作成者の役割が割り当てられています。 システム割り当て済みアクセス許可設定で仮想マシン共同作成者の権限を割り当てた場合の画面

※権限付与は必要最低限の権限で割り当てるようにします。
※仮想マシン共同作成者の権限を割り当てます。

—広告—

仮想マシンを起動するRunbookの作成、テスト、公開までの手順

RunbookにはPowerShellやPythonなど、いくつかの種類があります。

Azure Automation の Runbook の種類

今回はPowerShellを使用してRunbookを作成しています。

Runbookのリソースを作成

Runbookのリソースを作成します。
Runbook名は"vm-start-01″とします。
Runbookの種類にはPowerShellを選択し、ランタイムバージョンは7.2を指定します。

Runbookのリソース作成
AutomationアカウントでRunbookの作成を選択します。 AutomationアカウントでRunbookを作成する

Runbookの作成画面が表示されます。
Runbook名を設定します。
Runbookの種類、ランタイムバージョンを選択します。

 

Runbookの作成の基本タブでRunbookの種類やランタイムバージョンを設定をする
Runbookの種類で選択できる項目一覧
PowerShellで選択できるランタイムバージョン一覧

Runbookの作成確認画面です。
内容を確認し、Runbookのリソースを作成します。

作成が完了すると、Runbookの一覧画面に表示されます。
この時点では、作成状態は新規になっています。

Runbookの作成確認画面
AutomationアカウントでRunbookの一覧画面

仮想マシンを起動するRunbookを作成

仮想マシンを起動するRunbookを作成します。

仮想マシンを起動するRunbook

Runbookのリソースを作成します。
“VS Codeで編集"または"ポータルで編集"から選択します。
処理を行うPowerShellスクリプトを記載します。

※今回は"ポータルで編集"を選択しています。

 

Runbookの編集を開始(ポータルで編集を選択)
PowerShell Runbookの編集画面

作成したRunbookは、システム割り当てマネージドIDを利用した認証と、仮想マシンの起動処理を規定する内容で構成されています。

Runbookに記載したPowerShellです。

#Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process

#Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context

#set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

#仮想マシンを起動するPowerShell
$ResourceGroupName =“リソースグループ名"
$VirtualMachineName =“仮想マシン名"

Start-AzVM -ResourceGroupName $ResourceGroupName -Name $VirtualMachineName

Runbookを作成したら、テストウィンドウを使ってテストします。
保存してからテストウィンドウを選択します。

※テストウィンドウを選択すると、自動的に保存されます。

Runbookの編集内容を保存して、テストウィンドウを表示する

テスト画面が表示されます。
開始を選択すると、テストが開始されます。

※テストでは、PowerShellスクリプトの内容が実際に処理として実行されるため、注意が必要です。

Runbookのテストを開始する
テストが正常に終了すると、完了と表示されます。
StatusにもSucceededと表示されます。
Runbookのテストが正常に完了した事を確認

Runbookによって仮想マシンが起動されたことが確認できます。

※イベントの開始者は、Automationアカウントのリソース名になります。

Runbookで起動した仮想マシンの状態を確認
仮想マシンのアクティビティログでRunbookによる起動を確認

Azure PowerShellを利用した仮想マシンの操作方法については、こちらで紹介しています。

パラメーターを使ったPowerShell Runbookを作成

Runbookではパラメーターを利用することもできます。
パラメーターとして仮想マシン名やリソースグループを指定することも可能です。

PowerShell Runbook の入力パラメーターを構成する

仮想マシンを起動するRunbook(パラメーターを使う)
Runbookの編集画面を表示します。
PowerShellで処理の内容を記載します。
PowerShell Runbookでパラメータを使用した場合

作成したRunbookは、パラメーター、システム割り当てマネージドIDを利用した認証、処理(仮想マシンの起動)を規定する内容で構成されています。
リソースグループと仮想マシンをパラメーターとして指定するように変更しています。
パラメーターは必須としています。

Runbookに記載したPowerShellです。

Param
(
 [Parameter (Mandatory= $true)]
 [String] $ResourceGroupName,

 [Parameter (Mandatory= $true)]
 [String] $VirtualMachineName
)

# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process

# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context

# Set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

# 仮想マシンを起動するPowerShell
Start-AzVM -ResourceGroupName $ResourceGroupName -Name $VirtualMachineName

※複数のパラメーターがある場合は、,(カンマ)でパラメーター間を区切る必要があります。忘れるとエラーになります。

テスト画面を表示します。
前のRunbookでは無かったパラメーター入力欄が表示されます。
起動対象の仮想マシン名とリソースグループをパラメーターとして指定します。
パラメーターを入力後に開始を選択すると、テストが開始されます。

パラメータを指定してRunbookのテストを開始
テストが正常に終了すると、完了と表示されます。
StatusにもSucceededと表示されます。
パラメータを指定したRunbookのテストが正常に完了した場合

Runbookを利用開始する場合は公開が必要

Runbookを保存するだけでは、Webhookなどで外部から呼び出したり実行することはできません。
Runbookを公開する必要があります。

※公開したバージョンのRunbookが実行されます。Runbookを更新した場合は、再度公開する必要があります。

Runbookを公開

Runbookのメニューに"公開"があります。
これを選択すると、Runbookの発行確認画面が表示されます。
“はい"を選択すると、Runbookが利用可能になります。
Runbookの作成状態も発行済みに変わります。
Runbookを開始できるようになります。

PowerShell Runbookを公開する
PowerShell Runbookを発行する
PowerShell Runbook発行後の画面 
発行済みRunbookを一覧表示で確認する
公開したRunbookの開始(パラメータを指定する場合)

Runbookのスケジュール設定

Runbookのスケジュール設定手順については、こちらで紹介しています。
スケジュールで設定できる内容から平日のみ実行する場合のスケジュール設定例などを紹介しています。

最後に

Runbookを使った処理の自動化を行うまでの一連の手順を確認しました。
Automationアカウントの作成、Runbookリソースの作成、マネージドIDを利用した権限付与について、1つずつ作成し、仮想マシンの起動まで実施しました。
ギャラリーから作成済みのRunbookをインポートすることもでき、実際にはより手軽に処理の自動化が可能です。
非常に簡単に設定・利用でき、自動化に便利な機能だと感じました。

マイクロソフト公式サイトでもチュートリアルが公開されています。

チュートリアル: マネージド ID を使用して Automation PowerShell Runbook を作成する

Logic AppsのワークフローからRunbookを呼び出して実行させることができます。
手順については、こちらで紹介しています。

Runbook内の処理で実行時間帯を制限する事もできます。
PowerShell内で実行時間の制限する方法については、こちらで紹介しています。

Logic Appsのワークフローからも、仮想マシンを起動停止できます。
設定手順については、こちらで紹介しています。

スポンサーリンク