Azure Automation: Visual Studio Online を利用した Runbook ソース管理の統合
このポストは、7 月 24 日に投稿した Azure Automation: Integrating Runbook Source Control using Visual Studio Online の翻訳です。
はじめに
Azure Automation は Azure のリソースやサードパーティ システムの管理に役立つものですが、Azure Automation のリソース自体 (Runbook、モジュール、アセットなど) を管理するにはどうすればよいでしょうか? もちろん、Azure Automation のポータルや Azure Automation PowerShell コマンドレット (英語) を使用すれば基本的な管理タスクは実行できますが、Runbook、モジュール、アセットをソース管理システムに保存したり、変更履歴、監査、過去のバージョンの復元、さらに、開発、ステージング、本番の各ブランチ間でのバージョン移行における変更管理を行うには別の方法が必要になります。
実は Runbook をうまく利用することで、Azure Automation のリソースをソース管理システムに継続的に統合するように Azure Automation をセットアップすることができます。この記事では、Azure Automation を使用して Visual Studio Online (VSO) の Git リポジトリに対して繰り返しクエリを実行する方法と、Runbook (ps1 ファイル) をこのソース管理リポジトリから Automation アカウントに自動的に発行する方法について説明します。今回は Runbook のみを取り上げますが、Azure Automation を使用すればソース管理システムに保存されているモジュールやアセットを Azure Automation と継続的に統合することが可能です。
Sync-VsoGitRunbook Runbook
このシナリオのすべてのタスクは、Sync-VsoGitRunbook という Runbook を使用して実行できます。この Runbook は下のダウンロード ボタンから入手できます。
下の図は、ソース管理システムに保存されている Runbook を Azure Automation アカウントに継続的に統合するプロセスの全体像を示しています。この統合の優れている点は、Visual Studio Online の Git リポジトリを通常どおりに管理するだけで Runbook を管理できることです。
- Runbook を更新したら、コミットして更新を Visual Studio Online の Git リポジトリに保存します。
- 更新を元に戻したい場合は、コミットを取り消します。
- ステージング ブランチでの更新を本番ブランチに反映させるには、ステージングを本番にマージするだけです。
Sync-VsoGitRunbook Runbook は、同期元の Visual Studio Online の Git リポジトリと、同期先の Azure Automation アカウントをパラメーターで指定できます。また、この Runbook を実行している Automation アカウント、または別のアカウントと同期することもできます。内部的な処理としては、Runbook は指定された Visual Studio Online の Git リポジトリの情報を取得し、Runbook を指定の Azure Automation アカウントに再帰的 (子 Runbook、親 Runbook の順) にインポートして発行します。
Runbook を手動で開始して、オンデマンドで Azure Automation アカウントと Visual Studio Online の Git リポジトリを同期したり、スケジュール アセットを使用して同期を自動化したりすることができます。この Runbook の実行スケジュールは複数セットアップすることが可能なため、Git のブランチおよび Azure Automation アカウントの種類別に実行スケジュールを設定して、QA から本番までの変更管理を実現できます。たとえば、Git のステージング ブランチとステージングの Automation アカウントのパラメーター値を持つ Runbook と、Git の本番ブランチと本番の Automation アカウントのパラメーター値を持つ Runbook のスケジュールを設定すると、ステージングの Automation アカウントは Git のステージング ブランチと同期し、本番の Automation アカウントは Git の本番ブランチと同期します。Git のステージング ブランチから Git の本番ブランチにマージにすると、更新された Runbook が本番の Automation アカウントに自動的に移行されます。
Visual Studio Online をセットアップする
最初に Visual Studio Online アカウントを取得し、プロジェクトとリポジトリを構成する必要があります。アカウントを作成するには、こちらにアクセスしてください。
Git プロジェクトとリポジトリの構成については、こちらのブログ記事 (英語) を参照してください。
サンプル プロジェクトを作成する
これで Automation Runbook の Visual Studio プロジェクトを作成する準備が整いました。この例では、シンプルな Empty Project を使用します。
Runbook のプロジェクト構造
プロジェクトの構造は、親 Runbook を最上位のディレクトリに、子 Runbook をその配下のディレクトリに、子 Runbook の子をそのまた配下のディレクトリに置く階層構造にします。Runbook はディレクトリ ツリーを再帰的に参照し、一番下のディレクトリにある Runbook (最下位の子 Runbook) を最初に発行し、順次上位の子 Runbook を発行していきます。このため、子 Runbook が呼び出し元の Runbook (すなわち親 Runbook) よりも常に先にインポートされます。これは Azure Automation サービスでは子 Runbook をすべて最初に公開する必要があるためです。
この階層構造を図解すると以下のとおりです。
Visual Studio Online プロジェクト ビューでは次のような構造になります。
Visual Studio Online で代替認証資格情報をセットアップする
Sync-VsoGitRunbook Runbook を使用するには、Visual Studio Online ダッシュボード (右上) の [My Profile] で構成した Visual Studio Online の代替認証資格情報を使用します。
User Profile ダイアログで [CREDENTIALS] を選択して、代替認証資格情報を定義します。ここで設定したユーザー名とパスワードが Sync-VsoGitRunbook Runbook のパラメーターとして使用されます。
Sync-VsoGitRunbook Runbook を開始する
- まず、Connect-Azure Runbook を使用して Azure サブスクリプションを管理できるように Azure Automation アカウントをセットアップします。セットアップ方法の詳細については、IIS がある場合にはこちらのブログ記事 (英語) を、IIS がない場合にはこちらのブログ記事 (英語) を参照してください。
- Sync-VsoGitRunbook Runbook を次の Script Center からダウンロードします。
- Sync-VsoGitRunbook Runbook をインポートし発行します。
- 以下の Azure Automation アセットを作成します。
- Credential – 代替認証資格情報のユーザー名とパスワードが含まれます。
- Connection – 発行先の Automation アカウントがあるサブスクリプション ID を持つ Azure 接続の種類を作成します。
- Sync-VsoGitRunbook Runbook の毎日のスケジュールを以下のパラメーターで追加します。
- VSOCredentialName – Visual Studio Online の Profile ダイアログで設定した Visual Studio Online の代替認証資格情報の名前とパスワードを含む資格情報アセット名です。
- VSOAccount – Visual Studio Online のアカウント名です (例: https://accountname.visualstudio.com)。
- VSOProject – リポジトリを含む Visual Studio Online プロジェクト名です。
- VSORepository – Runbook プロジェクトが格納されたリポジトリ名です。
- VSORunbookFolderPath – Runbook が存在するルートのプロジェクト パスです。下の例では /Project1/Project1 を使用します。
-
- VSOBranch – Runbook の詳細を照会するために使用するブランチ名です (任意)。既定値は「master」です。
- AutomationAccount – Runbook の同期先の Automation アカウント名です。
- AzureConnection – Automation サービスで作成された Azure 接続設定の名前です。この接続設定には、サブスクリプション ID と管理証明書がある証明書設定の名前が含まれます。
まとめ
この記事では Sync-VsoGitRunbook Runbook を例に、Runbook でソース管理と継続的な統合を実現する方法について説明しました。ここで例示した手法は GitHub をはじめとするその他のオンライン ソース管理システムにも応用できます。ScriptCenter には Azure Automation Runbook が既に用意されています。GitHub リポジトリのコンテンツをダウンロードするにはこちら (英語) にアクセスしてください。Runbook を使用すれば、ここでご紹介したようなソリューションを構築して、GitHub をソース管理システムとして使用することができます。ご覧いただいたとおり、Azure Automation はとても便利で強力な自動化/統合サービスです。
Azure Automation をまだご利用いただいていない方は、こちらからぜひプレビューにサインアップして、スタートアップ ガイドをご覧ください。