Azure Automation を利用する: Automation のアセット
このポストは、7 月 29 日に投稿した Getting Started with Azure Automation: Automation Assets の翻訳です。
Azure Automation を利用すると、拡張性と信頼性に優れたワークフロー実行エンジンにより、Azure 環境のリソースの作成、デプロイメント、監視、メンテナンスを自動化できます。時間のかかる反復作業が Azure とサードパーティ システム全体で調整され、クラウド運用による成果を短時間で得ることができます。Azure Automation サービスの詳細については、Automation サービス (英語) を参照してください。
今回の記事では、Azure Automation のアセットを導入した理由と PowerShell よりも優れている点を中心に、次のトピックについて取り上げます。Automation のアセットの作成方法や使用方法の詳細については、https://technet.microsoft.com/en-us/library/dn457809.aspx (英語) を参照してください (注意: このページでは Service Management Automation と Azure Automation のアセットを取り上げています。現在記載されているセクションやコマンドレットは Service Management Automation に関するものです)。
- Automation のアセットとは
- Automation のアセットを導入した理由
- PowerShell よりも優れている点
- Runbook でのアセットの使用法
Automation のアセットとは
Automation の [ASSETS] ページには各種リソース (“設定” とも呼ばれる) が表示されます。これらのリソースには、Runbook でグローバルに使用できるもの、Runbook に関連するものの他に、統合モジュールのインポートやアセットの追加、削除を行うコマンドがあります。アセットの種類には変数、スケジュール、資格情報、および接続があります。
Automation のアセットの大まかな定義
• 変数
変数はすべての Runbook で使用できる値であり、Azure ポータル、Windows PowerShell (近日対応)、または Runbook 内から作成、変更、取得できます。Runbook でよく使用するファイルのディレクトリ パスやサーバー名、その他の文字列といった、使用頻度の高い設定を定義するのに使用します。変数設定には文字列、ブール値、整数、日時などの情報を保存し、Runbook で使用することができます。複雑なオブジェクト (プロパティ バッグとして保存) も格納できますが、その場合は Automation UI ではなく PowerShell を使用します。
• 接続
接続とは、Runbook からサービスやアプリケーションに接続するために必要な情報です。作成可能な接続の種類は Automation にインポートされた統合モジュールで定義されており、一般にユーザー名やパスワード、接続先のホストまたはサービスの URI などの情報です。たとえば、Azure Automation にあらかじめインストールされている Azure モジュール内の接続アセットには、サブスクリプション ID や証明書のフィールドがあり、Azure リソースをプログラムを通じて管理するために必要な情報が格納されています。接続のプロパティは Automation に安全に保存されており、Runbook から Get-AutomationConnection アクティビティを通じてアクセスできます。この情報は、単一または複数のパラメーターとして統合モジュールのアクティビティに渡され、接続の構成に使用されます。
• 資格情報
資格情報とは、Windows PowerShell コマンドで使用するユーザー名またはパスワードの組み合わせ、または Azure Automation にアップロードされる証明書のことです。資格情報のプロパティは Automation に安全に保管され、Runbook から Get-AutomationPSCredential または Get-AutomationCertificate アクティビティのどちらかを通じてアクセスできます。
• スケジュール
Azure Automation のスケジュールは Runbook を自動的に実行するのに使用します。スケジュールを使用すれば、Runbook を特定の日時に 1 回だけ実行したり、定期的に何回も実行したりすることができます。
• 統合モジュール
Azure Automation の Runbook は PowerShell コマンドレット (Automation では “アクティビティ” と呼ばれる) を使用してさまざまなシステムやサービス、デバイスにアクセスします。統合モジュールは、Windows PowerShell モジュールが格納されたパッケージであり、Azure Automation にインポートできます。インポートされたモジュールは、すべての Azure Automation Worker サーバーに配布され、Runbook で使用できるようになります。
統合モジュールの詳細については、以下の記事を参照してください。
• 統合モジュールの作成に関するブログ記事 (英語) (今回は Azure Automation の統合モジュールを取り上げていますが、Service Management Automation と基本的には同じです)
• TechNet 資料の「Building an Integration Module (統合モジュールを構築する) (英語)」セクション
Automation のアセットを導入した理由
アセットを作成するには、[ASSETS] タブをクリックし、[ADDING SETTING] オプションを選択します。
作成するアセットの種類を選択します。
続いては、Automation のアセットが使えない場合の課題とアセットによってもたらされる価値について説明します。
変数
課題: 複数の Runbook で同じデータを使用するのは一般的です。こうしたデータは各 Runbook にハード コーディングするのではなく、何らかの方法で 1 か所に保管し、各 Runbook から参照するほうが好ましく、更新が必要な場合に 1 か所で更新するだけで済みます。変数がないと、ファイルやデータベース、または別の手段を通じて Runbook のジョブ間でデータを交換、共有する方法を考えなければなりません。保存するしくみや通信プロトコルを構築するのは複雑かつ面倒で、競合状態も発生します。
Azure Automation による解決策: 変数は以下のように使用できます。
· Runbook 間での値の共有
· 同じ Runbook の複数のジョブ間での値の共有
· Azure ポータルから、または Runbook で使用する Windows PowerShell コマンドラインからの値の管理
接続
課題: Azure Automation は外部システムと統合することが可能です。外部システムと接続するには、外部システムとの接続に必要なすべてのデータ (例: ユーザー名、パスワード、ポート番号、プロトコルなど) を提供する方法を見つけなければなりません。これには次のような課題が伴います。
· システムの種類によって異なる種類のデータが必要 (例: URL、ポート番号、プロトコル)。
· 接続データを Runbook に渡す。
o 接続データは Runbook のパラメーターとして渡すことができますが、そうすると Runbook が実行されるたびに入力しなくてはなりません。さらに、データは個別のパラメーターとしてばらばらに渡さなければなりません。
o 別の方法として、接続データごとに変数または変数のセットを用意するという選択肢もあります。データを毎回入力という最初の問題は解消されるものの、データはばらばらのままです。
· 接続データの構造が変更された場合、すべての該当箇所 (パラメーター、変数、複数の Runbook など) でその変更内容を反映しなければならない。
Azure Automation による解決策: Azure Automation の接続アセットにより、次が可能になります。
· 外部システムに接続するために必要な接続データを単一のオブジェクトにまとめて、Runbook から簡単にアクセスできるようにする。
· システムへの接続方法を定義したテンプレートの作成。別のシステムへの接続を定義する際にテンプレートを利用することができます。
· 接続データに対する変更は 1 か所で済み、他の場所 (変数、Runbook など) で反映する必要はない。
資格情報
課題: Runbook は外部システムに接続するので資格情報が必要です。資格情報アセットがないと、資格情報を Runbook に安全に渡す方法を見つけなくてはならず厄介です。
Azure Automation による解決策: Azure Automation により、統一された安全な方法で資格情報を Runbook に保存し、参照できます。
スケジュール
課題: 多くの場合、Runbook は定期的に実行する必要があります。スケジュール アセットがないと、ユーザーが Runbook を手動で適切なタイミングで実行するか、独自のしくみを考案しなければなりません。
Azure Automation による解決策: Azure Automation を使用すれば、Runbook を先の予定として単発的に実行したり、定期的に繰り返し実行したりできます。
PowerShell ワークフローよりも優れている点
ワークフロー実行の可用性を高めるために、Azure Automation はさまざまな PowerShell セッション、プロセス、マシンで PowerShell コードを実行します。それを踏まえると、Automation のアセットの代わりに、純粋な PowerShell ワークフローで可能なやり方を用いて実行するのは非常に困難です。アセットの使用により、次のことが可能になります。
• 定数値の一元管理。
• ジョブ間でのアセット (変数、接続および資格情報) の共有。PowerShell でも可能ですが、独自の方法を考案しなければなりません。
• 資格情報および接続の安全な管理。
• すぐに使えるスケジュール機能。
Runbook でのアセットの使用法
次に、例を挙げながら、Runbook で Automation のアセットにアクセスする方法を紹介します。
変数
次のアクティビティは Runbook の変数にアクセスします。
アクティビティ |
説明 |
Get-AutomationVariable |
既存の変数の値を取得します。 |
Set-AutomationVariable |
変数の新規作成、または既存の変数への値の設定を行います。 |
例
$server = Get-AutomationVariable –Name ‘ServerName’
Set-AutomationVariable –Name ‘ServerName’ –Value $server
資格情報
次のアクティビティは Runbook の資格情報にアクセスします。
アクティビティ |
説明 |
Get-AutomationCertificate: |
Runbook で使用する証明書を取得します。 |
Get-AutomationPSCredential: |
Runbook で使用するユーザー名/パスワードを PSCredential として取得します。 |
例:
$credential = Get-AutomationPSCredential –Name ‘MyCredential’
$certificate = Get-AutomationCertificate –Name ‘MyCertificate’
接続
次のアクティビティは Runbook の資格情報にアクセスします。
アクティビティ |
説明 |
Get-AutomationConnection |
Runbook で使用する接続を取得します。 |
例:
$connection = Get-AutomationConnection –Name ‘MyConnection’
Do-Something –Connection $connection
まとめ
以上で、Azure Automation のアセットの使用により実現できること、アセットの作成方法、アセットによって解消される課題、純粋な PowerShell に対するアセットの利点について深くご理解いただけたのではないでしょうか。Runbook で Automation のアセットをお役立ていただけますと幸いです。
まだ Azure Automation をご利用でない方は、プレビュー版にサインアップしお試しください。また入門ガイドをご覧になってみてください。
では次回の記事でお会いするまで、ぜひ Automation をご活用ください!