カスタム スクリプト拡張 (Custom Script Extension) を使用した VM カスタマイズ タスクの自動化
このポストは、4 月 24 日に投稿された Automating VM Customization tasks using Custom Script Extension の翻訳です。
Build 2014 で発表された VM 拡張機能の 1 つに、PowerShell のサポートと共にリリースされた「カスタム スクリプト拡張 (Custom Script Extension)」という機能があります。このブログに初めてアクセスしたという方は、以前投稿された VM エージェントと拡張機能に関する記事 (パート 1、パート 2) を参照することをお勧めします。
今回は、この拡張機能で実現できる内容と、この拡張機能とリモート PowerShell といった既存のリモート実行ツールとの違いについて説明します。簡単に言うと、カスタム スクリプト拡張 (Custom Script Extension) を使用することで、自動的に Azure ストレージからスクリプトとファイルをダウンロードし、VM で PowerShell スクリプトを実行できます。これにより、追加のソフトウェア コンポーネントをインストールすることが可能です。他の VM 拡張機能と同様に、VM の作成中でも VM が実行された後でも追加できます。単純そうに思えるかもしれませんが、非常に便利です。
この拡張機能を使用して PowerShell スクリプトを実行する前提条件は、次のとおりです。
- こちらのページから、Azure PowerShell コマンドレット 0.8.0 以上をインストールします。
- 既存の VM でスクリプトを実行する場合は、VM 上で VM エージェントを有効にします (こちらのブログ記事の手順に従って VM エージェントをインストールしていない場合)。
- VM 上で実行するスクリプトを Azure ストレージにアップロードします。スクリプトは 1 つまたは複数のストレージ コンテナーから実行できます。
- スクリプトは、拡張機能によって実行されたエントリ スクリプト (entry script) が次に他のスクリプトを実行する、というようなしくみで作成する必要があります。
必要な前提条件について、おわかりいただけましたでしょうか。ここからは、いくつかの例を取り上げながら、これらのコマンドレットの使用方法について見ていきましょう。現行バージョンのカスタム スクリプト拡張 (Custom Script Extension) は、PowerShell コマンドレットのみを対象としていますが、将来的には他のスクリプトにも対応する予定です。
使用例 1: 既定のアカウント内のコンテナーにファイルをアップロードする
サブスクリプションの既定アカウントのストレージ コンテナーにスクリプトを格納している場合は、以下のコマンドレット スニペットを参考にして、そのスクリプトを VM 上で実行します。以下の例の ContainerName は、スクリプトのアップロード先です。既定のストレージ アカウントを確認するには、コマンドレット 'Get-AzureSubscription –Default' を使用します。
注: この例では新しい VM を作成していますが、既存の VM でも同じ操作で実行できます。
使用例 2: 既定以外のストレージアカウントを使用する
この例では、スクリプトまたはファイルのアップロードに、同じサブスクリプションまたは異なるサブスクリプションの既定以外のストレージを使用する方法を示します。ここでは、既存の VM を作成していますが、新しい VM を作成する場合でも同じ操作で実行できます。
使用例 3: 異なるストレージアカウントの複数のコンテナーにスクリプトをアップロードする
複数のコンテナーにスクリプト ファイルが格納されている場合、それらのスクリプトを実行するには、現時点では該当するスクリプト ファイルの完全な SAS URL を指定する必要があります。SAS URL は、Azure Storage Explorer (英語) などのツールを使用して生成できます。
これらのコマンドレットを、お客様の VM カスタマイズ タスクの自動化に少しでもお役立ていただければ幸いです。今後のリリースでこの拡張機能に導入してほしい機能がありましたら、ぜひご意見をお寄せください。ご意見、ご感想、ご質問はこちらのページ (英語) に投稿していただけます。