Azure VMのカスタムスクリプト拡張機能使用方法(Windowsの仮想マシンにIISをインストール)

2022-03-27Azure,PowerShell/Azure CLI,Virtual Machines

Azureの仮想マシン(Azure VM)でのカスタムスクリプト拡張機能の使い方の紹介です。
Azure Portalを利用して設定する手順を紹介しています。

Azureの仮想マシンには、拡張機能(Extension)と呼ばれる追加機能を組み込むことができます。
その一つが、カスタムスクリプト拡張機能(Custom Script Extension)です。

Windows でのカスタムのスクリプト拡張機能
Linux 仮想マシンで Azure カスタム スクリプト拡張機能 v2 を使用する

カスタムスクリプト拡張機能を使用すると、仮想マシンのOS上でスクリプトを実行することができます。
この拡張機能を使うとOSにログインすることなく、外部からOS上でスクリプトを実行させることが可能です。
たとえば、仮想マシンの作成直後にソフトウェアのインストールや初期設定を自動化したい場合などに便利な機能です。

Windows Server 2025の仮想マシンへのIISインストールを例に、カスタムスクリプト拡張機能の使い方を確認しました。

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

スポンサーリンク

Azure Portalを利用したカスタムスクリプト拡張機能を使い方(IISをインストール)

公式サイトのチュートリアル

公式サイトに記載されているチュートリアルを参考に進めます。
チュートリアルではPowerShellを使用していますが、今回はAzure Portalを利用して実施します。

Tutorial – Deploy applications to a Windows virtual machine in Azure with the Custom Script Extension

また、スクリプト作成にあたってのヒントについては、こちらに記載されています。

ヒント

ヒントには、1回しか実行できないなどの注意事項が多く記載されているため、事前に確認するようにします。

事前に実行するスクリプトファイルをストレージアカウントへアップロードしておく必要がある(Azure Portal利用の場合)

カスタムスクリプトで実行する処理内容は、あらかじめファイルとして準備しておく必要があります。
また、作成したファイルはストレージアカウントのBlobコンテナーにアップロードしておく必要があります。

ただし、ストレージアカウントにアップロードしたファイルから読み込む必要があるのは、Azure Portalを利用してカスタムスクリプト拡張機能を実行する場合のみです。
Azure PowerShellのSet-AzVMExtensionコマンドレットを使用して設定する場合は、スクリプトファイルをそのままローカルパスで指定したり、スクリプト内容を直接記述したりすることもできます。

仮想マシンにIISをインストールするスクリプトファイル

今回は、IISをインストールするスクリプトファイルを準備しています。
Add-WindowsFeature-Web-Server.ps1という名前でファイルを作成し、ストレージアカウントにアップロードしています。

スクリプトファイルのサンプル

Add-WindowsFeatureでIISのインストールを行います。
Add-ContentでIISがデフォルト表示する画面を作成しています。

Add-WindowsFeature Web-Server
Add-Content -Path “C:\inetpub\wwwroot\Default.htm" -Value $($env:computername)

※スクリプトの内容は、チュートリアルに記載の内容を流用しています。

仮想マシンにカスタムスクリプト拡張機能をインストールしてスクリプトを実行

仮想マシンにカスタムスクリプト拡張機能をインストールする必要があります。
カスタムスクリプト拡張機能のインストールと同時にスクリプトが実行されます。

Azure Portalを利用してカスタムスクリプト拡張機能をインストールする際には、ストレージアカウントにアップロードしたスクリプトファイルを指定する必要があります。
なお、拡張機能のインストール時には、仮想マシンが起動している必要があります。

カスタムスクリプト拡張機能をインストール
拡張機能とアプリケーションを選択します。
拡張機能のタブで追加を選択します。
拡張機能とアプリケーションのメニューから追加(カスタムスクリプト拡張機能の利用方法)
拡張機能のインストール画面です。
Custom script Extensionを選択します。
拡張機能をインストール(カスタムスクリプト拡張機能の利用方法)
スクリプトファイルの選択画面です。
事前に作成しておいたカスタムスクリプトのファイルを読み込む形になります。
参照ボタンを選択します。
実行するスクリプトファイルを指定(カスタムスクリプト拡張機能の利用方法)
ストレージアカウントのリストが表示されます。
スクリプトをアップロードしたストレージアカウントを選択します。
スクリプトが保管されているストレージアカウントを指定(カスタムスクリプト拡張機能の利用方法)
Blobコンテナーの指定画面です。
スクリプトをアップロードしたコンテナーを選択します。
ストレージアカウントのBlobコンテナーを指定(カスタムスクリプト拡張機能の利用方法)

コンテナー内にあるスクリプトファイルを選択します。
この画面で、ストレージアカウントへスクリプトファイルをアップロードすることもできます。

ストレージアカウントに保管されているスクリプトファイルを指定(カスタムスクリプト拡張機能の利用方法)

アップロードしたスクリプトファイルが表示されます。
確認と作成を選択します。

スクリプトファイル指定後の設定画面(カスタムスクリプト拡張機能の利用方法)

確認画面です。
設定されているスクリプトファイルが正しいことを確認し、作成を選択します。

※拡張機能インストールと同時にスクリプトは自動的に実行されます。

カスタムスクリプト拡張機能インストールの確認画面(カスタムスクリプト拡張機能の利用方法)

カスタムスクリプト拡張機能(Custom Script Extension)がインストールされていることが確認できます。

拡張機能インストール後の仮想マシン設定画面(カスタムスクリプト拡張機能の利用方法)

スクリプトの実行結果を確認(IISのインストールを確認)

仮想マシンにブラウザでアクセスして、IISがインストールされていることを確認します。
また、サーバーマネージャーでもIISのインストールを確認しています。

今回は、仮想マシン内からアクセスして確認しています。
外部からアクセスする場合は、IISが使用するHTTP通信(80番ポート)を許可する必要があります。
アクセス元からの通信を許可するために、NSG(ネットワークセキュリティグループ)で80番ポートの受信を許可します。

IISのインストールを確認

http://仮想マシンのIPアドレス、もしくはlocalhostでアクセスします。
IISの既定のページが表示され、ホスト名が確認できます。

ブラウザでアクセスしてIISのインストールを確認(カスタムスクリプト拡張機能の利用方法)

Windowsのサーバーマネジャーを確認します。
IISがインストールされていることが確認できます。

サーバーマネージャーでIISのインストールを確認(カスタムスクリプト拡張機能の利用方法)

—広告—

最後に

今回はIISのインストールを例に、Windows仮想マシンでカスタムスクリプト拡張機能の利用方法について確認しました。
事前にPowerShellファイルを準備しておくだけで、仮想マシン上で共通の設定を簡単に適用できるため、非常に便利な機能だと感じます。
今回はIISのインストールを行いましたが、その他にもさまざまな処理を実行することができます。

引き続き、いろいろと試してみたいと思います。

仮想マシンのイメージ化については、こちらで紹介しています。

カスタムデータを使ってLinuxの仮想マシンでスクリプト実行させる手順については、こちらで紹介しています。

スポンサーリンク