次の方法で共有


Azure Automationでの Runbook の実行

Azure Automationのプロセス自動化を使用すると、PowerShell、PowerShell ワークフロー、グラフィカル Runbook を作成および管理できます。 詳細については、「Azure Automation Runbook」を参照してください。

Runbook は、Automation によって、その内部で定義されているロジックに基づいて実行されます。 Runbook は、中断された場合、先頭から再開されます。 この動作では、一時的な問題が発生した場合の再起動をサポートするように Runbook を作成する必要があります。

Azure Automationで Runbook を開始すると、Runbook の 1 つの実行インスタンスであるジョブが作成されます。 各ジョブは、Azure サブスクリプションに接続することで、Azureリソースにアクセスします。 ジョブでデータ センター内のリソースにアクセスできるのは、それらのリソースがパブリック クラウドからアクセスできる場合に限られます。

Azure Automationは、Runbook の実行中に各ジョブを実行するワーカーを割り当てます。 worker は多数の Automation アカウントで共有されますが、異なる Automation アカウントからのジョブは互いに分離されます。 どの worker がジョブの要求を処理するかを制御することはできません。

Azure ポータルで Runbook の一覧を表示すると、各 Runbook で開始された各ジョブの状態が表示されます。 Azure Automationは、ジョブ ログを最大 30 日間格納します。

次の図では、PowerShell RunbookPowerShell ワークフロー Runbookグラフィック Runbookでの Runbook ジョブのライフサイクルを示します。

ジョブの状態 - PowerShell Workflow

個人データの表示または削除については、 特定の領域とニーズに応じて、「GDPR の一般データ主体要求Azure GDPR のデータ主体要求、または Windows GDPR のデータ主体要求を参照してください。 GDPR の詳細については、Microsoft セキュリティ センターの GDPR セクションおよび Service Trust portal の GDPR セクションを参照してください。

Runbook の実行環境

Azure Automationの Runbook は、Azure サンドボックスまたは Hybrid Runbook Worker で実行できます。

Runbook は、Azure内のリソースに対して認証および実行するように設計されている場合、Azure サンドボックスで実行されます。 Azure Automationは、サンドボックスでの Runbook の実行中に各ジョブを実行するワーカーを割り当てます。 worker は多数の Automation アカウントで共有されますが、異なる Automation アカウントからのジョブは互いに分離されます。 同じサンドボックスを使用するジョブは、サンドボックスのリソース制限に縛られます。 Azure サンドボックス環境では、対話型操作はサポートされていません。

また、Hybrid Runbook Worker を使用すると、そのロールがホストされているコンピューターで、環境内のローカル リソースに対して Runbook を直接実行することができます。 Azure Automation Runbook を格納および管理し、割り当てられた 1 つ以上のコンピューターに配信します。

Azure StorageAzure Key Vault、または Azure SQLこれらのサービスAzure Automation Runbook からのアクセスがブロックされます。 Automation は信頼されたサービスの一覧に含まれていないので、信頼されたMicrosoft サービスを許可するファイアウォール例外が有効になっている場合でも、アクセスはブロックされます。 ファイアウォールが有効になっている場合は、Hybrid Runbook Worker と仮想ネットワーク サービス エンドポイントを使用しないとアクセスできません。

次の表では、いくつかの Runbook 実行タスクと、それぞれに対して推奨される実行環境を示します。

タスク 推奨 Notes
Azure リソースとの統合 Azure サンドボックス Azureでホストされるため、認証は簡単です。 Azure VM で Hybrid Runbook Worker を使用している場合は、マネージド ID を使用して Runbook 認証を使用できます
Azure リソースを管理するための最適なパフォーマンスを得る Azure サンドボックス スクリプトは同じ環境内で実行され、待ち時間が短くなります。
運用コストを最小限に抑える Azure サンドボックス コンピューティングのオーバーヘッドがなく、VM の必要がありません。
実行時間の長いスクリプトを実行する Hybrid Runbook Worker Azureサンドボックスには、リソースの制限があります。
ローカル サービスと対話する Hybrid Runbook Worker ホスト コンピューター、他のクラウド環境内のリソース、またはオンプレミス環境内のリソースに直接アクセスします。
サードパーティのソフトウェアと実行可能ファイルが必要である Hybrid Runbook Worker 自分でオペレーティング システムを管理し、ソフトウェアをインストールできます。
Runbook でファイルまたはフォルダーを監視する Hybrid Runbook Worker Hybrid Runbook Worker で Watcher タスクを使用します。
リソースを大量に消費するスクリプトを実行する Hybrid Runbook Worker Azureサンドボックスには、リソースの制限があります。
特定の要件を持つモジュールを使用する Hybrid Runbook Worker 次に例をいくつか示します。
WinSCP - winscp.exe に対する依存関係
IIS administration - IIS の有効化または管理に対する依存関係
インストーラでモジュールをインストールする Hybrid Runbook Worker サンドボックス用のモジュールでは、コピーがサポートされている必要があります。
4.7.2 とは異なる .NET Framework バージョンを必要とする Runbook またはモジュールを使用する Hybrid Runbook Worker Azureサンドボックスは Framework 4.7.2 .NETサポートしており、別のバージョンへのアップグレードはサポートされていません。
昇格が必要なスクリプトを実行する Hybrid Runbook Worker サンドボックスでは、昇格は許可されません。 Hybrid Runbook Worker を使用すると、UAC をオフにして、昇格が必要なコマンドを実行するときに Invoke-Command を使用できます。

サンドボックスでの一時ストレージ

Runbook ロジックの一部として一時ファイルを作成する必要がある場合は、Azureで実行されている Runbook のAzure サンドボックス内の Temp フォルダー (つまり、$env:TEMP) を使用できます。 唯一の制限は、各サンドボックスのクォータである 1 GB を超えるディスク領域を使用できないことです。 PowerShell ワークフローを使用する場合、PowerShell ワークフローによってチェックポイントが使用され、スクリプトが別のサンドボックスで再試行される可能性があるため、このシナリオでは問題が発生する可能性があります。

ハイブリッド サンドボックスでは、Hybrid Runbook Worker でのストレージの可用性に基づいて C:\temp を使用できます。 ただし、Azure VM の推奨事項に従って、保存する必要があるデータに対して Windows または Linux 上で temporary disk を使用しないでください。

リソース

Runbook には必ず、リソース (VM、ネットワーク、ネットワーク上のリソースなど) を扱うロジックが含まれています。 リソースはAzure サブスクリプションに関連付けられており、Runbook はリソースにアクセスするために適切な資格情報を必要とします。 Runbook におけるリソースの処理の例については、「リソースの処理」を参照してください。

セキュリティ

Azure Automationでは、Microsoft Defender for Cloud を使用してリソースのセキュリティを提供し、Linux システムの侵害を検出します。 リソースがAzureされているかどうかに関係なく、ワークロード全体でセキュリティが提供されます。 Azure Automationにおける認証の紹介を参照してください。

Defender for Cloudは、VM で任意のスクリプト (署名済みまたは署名なし) を実行できるユーザーに制約を設定します。 VM へのルート アクセスを持つユーザーは、明示的にデジタル署名を使用してマシンを構成するか、デジタル署名をオフにする必要があります。 それ以外のユーザーが、Automation アカウントを作成し、該当する機能を有効にした後で実行できるのは、オペレーティング システムの更新プログラムを適用するスクリプトだけです。

サブスクリプション

Azure サブスクリプションは、課金対象の 1 つ以上のクラウドベースのサービスを使用するMicrosoftとの契約です。 使用している資格情報が 複数のサブスクリプション にアクセスできる場合は、同じ Automation アカウントから複数のサブスクリプションを管理できます。

資格情報

Runbook では、Azureまたはサード パーティのシステムに関係なく、リソースにアクセスするために適切なcredentialsが必要です。 これらの資格情報は、Azure Automation、Key Vaultなどに格納されます。

Azure Monitor

Azure Automationでは、Azure Monitor を使用してマシンの操作を監視できます。

Runbook のアクセス許可

Runbook には、Azureへの認証を行うための資格情報に関連する権限が必要です。 Azure Automation認証の概要を参照してください。

モジュール

Azure Automationには、次の PowerShell モジュールが含まれています。

  • Orchestrator.AssetManagement.Cmdlets - Azure サンドボックス環境または Windows Hybrid Runbook Worker で Runbook を実行する場合にのみ使用できるいくつかの内部コマンドレットが含まれています。 これらのコマンドレットは、Azure PowerShellコマンドレットを使用して Automation アカウント リソースを操作する代わりに使用するように設計されています。
  • Az.Automation - AzureRM Automation モジュールを置き換えるAzure Automationとの対話に推奨される PowerShell モジュール。 Automation アカウントを作成するときに Az.Automation モジュールは自動的に含まれません。手動でインポートする必要があります。
  • AzureRM.Automation - Automation アカウントを作成するときに既定でインストールされます。

また、Runbook と DSC 構成に必要なコマンドレットに基づいて、インストール可能なモジュールもサポートされています。 Runbook と DSC 構成で使用できるモジュールの詳細については、Azure Automation の Manage モジュールを参照してください。

証明書

Azure Automationは、Azureへの認証や、Azureまたはサードパーティのリソースへの追加に証明書を使用します。 証明書は、Runbook や DSC の構成からアクセスできるよう安全に保存されます。

ランブック (運用手順書) では、証明機関 (CA) によって署名されていない自己署名証明書を使用できます。 「新しい証明書の作成」を参照してください。

ジョブ

Azure Automationは、同じ Automation アカウントからジョブを実行する環境をサポートします。 1 つの Runbook で、多数のジョブを同時に実行することができます。 同時に実行するジョブが多いほど、同じサンドボックスにディスパッチする頻度が上がります。 サンドボックスでは、最大 10 個のジョブを実行できます。 サンドボックス内でジョブが実行されていない場合、サンドボックスは削除されます。そのため、ファイルの保存には使用しないでください。

同じサンドボックス プロセスで実行するジョブは、お互いに影響し合う可能性があります。 1 つの例は、Disconnect-AzAccount コマンドレットの実行です。 このコマンドレットを実行すると、共有サンドボックス プロセス内の各 Runbook ジョブが切断されます。 このシナリオに取り組む例については、「コンカレント ジョブの防止」を参照してください。

Azure サンドボックスで実行される Runbook から開始された PowerShell ジョブは、完全な PowerShell 言語モードで実行されない場合があります。

ジョブの状態

次の表では、ジョブで可能性のある状態について説明します。 Azure ポータルでは、すべての Runbook ジョブの状態の概要を表示したり、特定の Runbook ジョブの詳細をドリルダウンしたりできます。 Log Analytics ワークスペースとの統合を構成して、Runbook ジョブの状態とジョブ ストリームを転送することもできます。 Azure Monitor ログとの統合の詳細については、「 Automation から Azure Monitor ログへジョブの状態とジョブ ストリームを転送する方法」を参照してください。 Runbook で状態を扱う例については、「ジョブの状態を取得する」も参照してください。

ステータス 説明
アクティブ化中 ジョブをアクティブ化しています。
完了 ジョブは正常に完了しました。
失敗しました グラフィック Runbook または PowerShell ワークフロー Runbook のコンパイルが失敗しました。 PowerShell Runbook を開始できなかったか、ジョブで例外が発生しました。 「Azure Automation Runbook の種類を参照してください。
失敗、リソースを待機中 ジョブは fair share の限界に 3 回到達し、毎回、同じチェックポイントから、または Runbook の先頭から起動したために、失敗しました。
キューに登録済み ジョブは、開始できるように、Automation ワーカー上のリソースが使用可能になるのを待機しています。
再開中 システムは、ジョブが停止された後、そのジョブを再開しています。
実行中 ジョブは実行中です。
実行中、リソースを待機中 ジョブはフェア シェア制限に達したためにアンロードされました。 ジョブは最後のチェックポイントからすぐに再開します。
開始中 ジョブがワーカーに割り当てられており、システムがジョブを起動しています。
停止しました ジョブは完了した後、ユーザーによって停止されました。
停止中 システムは、ジョブを停止しています。
Suspended グラフィック Runbook と PowerShell ワークフロー Runbook のみに適用されます。 ユーザーか、システムか、または Runbook 内のコマンドによってジョブは中断されました。 Runbook にチェックポイントがない場合は、先頭から開始されます。 チェックポイントがある場合は、最後のチェックポイントからもう一度再開できます。 システムは、例外が発生した場合にのみ Runbook を中断します。 既定で、ErrorActionPreference 変数は、エラーでもジョブの実行を継続することを示す [Continue] に設定されます。 このユーザー設定変数を [Stop] に設定すると、エラーが発生したときにジョブは中断されます。
中断中 グラフィック Runbook と PowerShell ワークフロー Runbook のみに適用されます。 ユーザーの要求を受けてシステムはジョブを中断しようとしています。 Runbook は、次のチェックポイントに到達してからでないと、中断できません。 最後のチェックポイントに既に到達している場合は、完了してからでないと中断できません。
新規 ジョブは最近送信されましたが、まだアクティブ化されていません。

インフラストラクチャの障害が発生した場合、ジョブは内部的に最大 3 回再試行されます。

アクティビティ ログ

Azure Automationでの Runbook の実行により、Automation アカウントのアクティビティ ログに詳細が書き込まれます。 ログの使用の詳細については、「アクティビティ ログから詳細を取得する」を参照してください。

例外

ここでは、Runbook で例外または断続的な問題を処理するいくつかの方法について説明します。 たとえば WebSocket の例外があります。 正しい例外処理を使用すると、一時的なネットワーク エラーによって Runbook が失敗することを防ぐことができます。

ErrorActionPreference

ErrorActionPreference 変数により、終了しないエラーに対して PowerShell が対応する方法が決まります。 終了エラーは常に終了し、 ErrorActionPreferenceの影響を受けません。

Runbook で ErrorActionPreference を使用すると、PathNotFound コマンドレットの などの通常は終了しないエラーによって、Runbook の完了が停止します。 次の例は、ErrorActionPreference の使用方法を示しています。 スクリプトが停止するため、最後の Write-Output コマンドは実行されません。

$ErrorActionPreference = 'Stop'
Get-ChildItem -path nofile.txt
Write-Output "This message will not show"

最後に Catch を試す

Try Catch Finally は、終了するエラーを処理するために PowerShell スクリプトで使用されます。 スクリプトでは、このメカニズムを使用して、特定の例外または一般的な例外をキャッチできます。 エラーを追跡または処理するには、catch ステートメントを使用する必要があります。 次の例では、存在しないファイルをダウンロードしようとしています。 これは、System.Net.WebException 例外をキャッチして、その他の例外の最後の値を返します。

try
{
   $wc = new-object System.Net.WebClient
   $wc.DownloadFile("http://www.contoso.com/MyDoc.doc")
}
catch [System.Net.WebException]
{
    "Unable to download MyDoc.doc from http://www.contoso.com."
}
catch
{
    "An error occurred that could not be resolved."
}

Throw

Throw を使用すると、終了するエラーを生成できます。 このメカニズムは、Runbook で独自のロジックを定義するときに役立ちます。 スクリプトが停止の必要な条件を満たしている場合は、throw ステートメントを使用して停止できます。 次の例では、このステートメントを使用して、必要な関数パラメーターを示します。

function Get-ContosoFiles
{
  param ($path = $(throw "The Path parameter is required."))
  Get-ChildItem -Path $path\*.txt -recurse
}

エラー

Runbook はエラーを処理する必要があります。 Azure Automationでは、終了と非終了の 2 種類の PowerShell エラーがサポートされます。

終了するエラーが発生すると、Runbook の実行は停止されます。 Runbook は、[失敗] のジョブ状態で停止します。

終了しないエラーの場合は、エラー発生後もスクリプトを継続できます。 終了しないエラーの例は、Runbook で、存在しないパスを指定して Get-ChildItem コマンドレットを使用したときに発生するものです。 PowerShell では、パスが存在しないことを確認して、エラーをスローし、次のフォルダーへと処理を継続します。 この場合のエラーでは、Runbook のジョブ状態は [失敗] に設定されず、ジョブが完了する可能性もあります。 終了しないエラー時に Runbook を強制的に停止するには、コマンドレットで ErrorAction Stop を使用できます。

プロセスの呼び出し

Azureサンドボックスで実行される Runbook は、実行可能ファイル (.exe ファイル) やサブプロセスなどの呼び出しプロセスをサポートしていません。 その理由は、Azureサンドボックスは、基になる API すべてにアクセスできない可能性があるコンテナーで実行される共有プロセスであるためです。 サード パーティ製ソフトウェアや、サブプロセスの呼び出しを必要とするシナリオの場合は、Hybrid Runbook Worker で Runbook を実行する必要があります。

デバイスとアプリケーションの特性

Azure サンドボックス内の Runbook ジョブは、デバイスやアプリケーションの特性にアクセスできません。 Windowsのパフォーマンス メトリックのクエリに使用される最も一般的な API は WMI であり、一般的なメトリックの一部はメモリと CPU 使用率です。

Webhooks

外部サービス (Azure DevOps Services や GitHub など) は、Azure Automationで Runbook を開始できます。 この種類の開始を行うために、サービスでは 1 つの HTTP 要求を介して Webhook を使用します。 Webhook を使用すると、完全なAzure Automation機能を実装せずに Runbook を開始できます。

共有リソース

クラウド内のすべての Runbook 間でリソースを共有するために、Azureは fair share という概念を使用します。 フェア シェアを使用Azure、3 時間以上実行されているジョブを一時的にアンロードまたは停止します。 PowerShell Runbook および Python Runbook のジョブは停止され、再起動されず、ジョブの状態は停止されます。

実行時間の長いAzure Automation タスクの場合は、Hybrid Runbook Worker を使用することをお勧めします。 Hybrid Runbook Worker はフェア シェアによって制限されず、Runbook が実行できる時間に制限がありません。 もう 1 つのジョブ limits Azure サンドボックスと Hybrid Runbook Worker の両方に適用されます。 Hybrid Runbook Worker は 3 時間のフェア シェア制限を受けませんが、予期しないローカル インフラストラクチャの問題からの再起動がサポートされる worker で実行されるように Runbook を開発する必要があります。

もう 1 つのオプションは、子 Runbook を使用して Runbook を最適化することです。 たとえば、複数のデータベースに対するデータベース操作など、複数のリソースに対する同じ機能によって Runbook がループする可能性があります。 このような機能は、子 Runbook に移動し、Start-AzAutomationRunbook を使用して親 Runbook でそれを呼び出すことができます。 子 Runbook は別々のプロセスで並列に実行されます。

子 Runbook を使用すると、親 Runbook の完了までにかかる合計時間が短縮されます。 Runbook で子の完了後にまだ実行する操作がある場合、Get-AzAutomationJob コマンドレットを使用して、子 Runbook のジョブ状態を確認できます。

次のステップ