Azure Desired State Configuration 拡張機能ハンドラーの概要

Azure 仮想マシン (VM) 用の Azure VM 拡張機能と関連する拡張機能は、Microsoft Azure インフラストラクチャ サービスの一部です。 Azure VM 拡張機能は、VM の機能を拡張し、さまざまな VM の管理操作を簡略化するソフトウェア コンポーネントです。

Windows PowerShell 用の Azure Desired State Configuration (DSC) 拡張機能の主な用途は、Azure Automation State Configuration (DSC) サービスに対して VM をブートストラップすることです。 このサービスには、VM 構成の継続的な管理や、Azure Monitor などの他の操作ツールとの統合など、メリットがあります。 この拡張機能を使用して VM をサービスに登録し、Azure サブスクリプション全体で機能する柔軟なソリューションを得ることができます。

DSC 拡張機能は Automation DSC サービスとは別に実行できますが、この方法では構成のみが VM にプッシュされます。 VM 内でローカルに使用する場合を除き、継続的なレポート管理は利用できません。 DSC 拡張機能を有効にする前に、使用可能な DSC バージョンを確認し、実際の構成要件をサポートするバージョンを選択してください。

この記事では、Automation オンボードのために DSC 拡張機能を使用する方法、または Azure SDK で VM に構成を割り当てるツールとして DSC 拡張機能を使用する方法について説明します。

使用可能な DSC バージョン

実装できる Desired State Configuration のバージョンはいくつかあります。 DSC 拡張機能を有効にする前に、実際の構成とビジネス目標を最も適切にサポートする DSC バージョンを選択してください。

バージョン 可用性 説明
2.0 一般公開 Desired State Configuration 2.0 は、Azure Automanage のマシン構成機能での使用がサポートされています。 マシン構成機能では、DSC 拡張機能ハンドラーや Azure Automation State Configuration の機能のほか、お客様のフィードバックで最も一般的に要求された機能が組み合わされています。 マシンの構成には、Arc 対応サーバーによるハイブリッド マシンのサポートも含まれています。
1.1 一般公開 実装で Azure Automanage マシン構成機能を使用しない場合、Desired State Configuration 1.1 を選択する必要があります。 詳細については、「PSDesiredStateConfiguration v1.1」を参照してください。
3.0 パブリック プレビュー Desired State Configuration 3.0 はパブリック ベータ版で入手できます。 このバージョンは、Azure マシン構成でのみ使用するか、非運用環境で Desired State Configuration 1.1 からの移行をテストする場合にのみ使用する必要があります。

前提条件

  • ローカル マシン: Azure DSC 拡張機能を利用するには、ローカル マシンで Azure portal または Azure PowerShell SDK のいずれかを使用する必要があります。

  • ゲスト エージェント: DSC 構成で準備される Azure VM では、Windows Management Framework (WMF) 4.0 以降をサポートするオペレーティング システムを使用する必要があります。 サポートされているオペレーティング システムのバージョンの全一覧については、「Azure DSC 拡張機能のバージョン履歴」を参照してください。

用語と概念

この記事は、読者が次の概念を理解していることを前提としています。

  • 構成は、DSC 構成ドキュメントを指します。

  • ノードは、DSC 構成のターゲットを指します。 この記事では、"ノード" は常に Azure VM を指します。

  • 構成データは、構成の環境データを含む PowerShell DSC 形式ファイル (.psd1) に保存されます。

アーキテクチャ

Azure DSC 拡張機能は、Azure VM 拡張機能フレームワークを使用して、Azure VM で実行される DSC 構成の配布、適用、レポート作成を行います。 DSC 拡張機能は、構成ドキュメントと一連のパラメーターを受け取ります。 ファイルが指定されていない場合、既定の構成スクリプトが拡張機能に埋め込まれています。 既定の構成スクリプトは、ローカル構成マネージャーにメタデータを設定するためにのみ使用されます。

この拡張機能が初めて呼び出されると、次のロジックに従って WMF のバージョンがインストールされます。

  • Azure VM のオペレーティング システムが Windows Server 2016 の場合、処理は行われません。 Windows Server 2016 では既に PowerShell の最新バージョンがインストールされてるためです。

  • wmfVersion プロパティが指定されている場合、指定した WMF のバージョンが VM のオペレーティング システムと互換性がない場合を除いて、その指定したバージョンがインストールされます。

  • wmfVersion プロパティを指定しなかった場合は、WMF の適用可能な最新バージョンがインストールされます。

WMF のインストール プロセスでは、再起動が必要になります。 再起動後、modulesUrl プロパティで指定された .zip ファイルが拡張機能によってダウンロードされます (指定した場合)。 この場所が Azure Blob Storage 内の場合、sasToken プロパティに SAS トークンを指定して、ファイルにアクセスできます。 .zip がダウンロードされ、アンパックされた後、configurationFunction で定義されている構成関数が実行され、Managed Object Format (MOF) ファイル (.mof) が生成されます。 その後、拡張機能によって、生成された .mof ファイルを使用して Start-DscConfiguration -Force コマンドが実行されます。 拡張機能は、この出力を取得して Azure の状態チャネルに書き込みます。

既定の構成スクリプト

Azure DSC 拡張機能には、VM を Azure Automation State Configuration サービスにオンボードするときに使用できる既定の構成スクリプトが含まれています。 スクリプト パラメーターは、ローカル構成マネージャーの構成可能なプロパティと合致しています。 スクリプトのパラメーターについては、Azure Resource Manager (ARM) テンプレートでの Desired State Configuration 拡張機能に関するページの既定の構成スクリプトに関する記事を参照してください。 完全なスクリプトについては、GitHub の Azure クイックスタート テンプレートに関するページを参照してください。

Azure Automation State Configuration の登録

Azure DSC 拡張機能を使用してノードを Azure Automation State Configuration サービスに登録する場合、次の値を指定します。

  • RegistrationUrl: Azure Automation アカウントの https アドレス。
  • RegistrationKey: ノードをサービスに登録するために使用される共有シークレット。
  • NodeConfigurationName: サーバー ロールを構成するためにサービスからプルするノード構成 (MOF) の名前。 この値はノード構成の名前であり、構成の名前ではありません。

これらの値は Azure portal から収集できます。または Windows PowerShell で次のコマンドを実行できます。

(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).Endpoint
(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).PrimaryKey

ノード構成名

NodeConfigurationName パラメーターには、構成の名前ではなく、ノード構成の名前を必ず指定してください。

構成は、ノード構成 (MOF ファイル) をコンパイルするために使用されるスクリプトで定義されます。 ノード構成の名前は、常に、構成の名前の後にピリオド .localhost または特定のコンピューター名が続いたものになります。

警告

Azure Automation State Configuration にノード構成が存在することを確認してください。 この値が存在しない場合、拡張機能のデプロイでエラーが返されます。

ARM テンプレートのデプロイ

DSC 拡張機能をデプロイするための最も一般的な方法は、Azure Resource Manager テンプレートを使用することです。 ARM テンプレートに DSC 拡張機能を含める方法の詳細と例については、ARM テンプレートでの Desired State Configuration 拡張機能に関するページを参照してください。

PowerShell コマンドレットのデプロイ

対話型のトラブルシューティングや情報収集のシナリオには、DSC 拡張機能を管理するための PowerShell コマンドレットが最適です。 このコマンドレットを使用すると、DSC 拡張機能のデプロイをパッケージ化、発行、監視できます。 DSC 拡張機能用のコマンドレットは、現時点では、既定の構成スクリプトで動作するように更新されていません。

使用できる PowerShell コマンドレットの一部を次に示します。

  • Publish-AzVMDscConfiguration コマンドレットは構成ファイルを取り込み、構成ファイルをスキャンして依存 DSC リソースを探し、.zip ファイルを作成します。 .zip ファイルには、構成と、構成を適用するために必要な DSC リソースが含まれています。 コマンドレットは -OutputArchivePath パラメーターを使用してローカルでパッケージを作成することもできます。 これを使用しない場合、コマンドレットにより Blob Storage に .zip ファイルが発行され、SAS トークンを使用して保護されます。

    このコマンドレットによって作成された PowerShell 構成スクリプト (.ps1) は、アーカイブ フォルダーのルートの .zip ファイル内にあります。 モジュール フォルダーは、リソースのアーカイブ フォルダーに配置されます。

  • Set-AzVMDscExtension コマンドレットは、PowerShell DSC 拡張機能が必要とする設定を VM 構成オブジェクトに挿入します。

  • Get-AzVMDscExtension コマンドレットは、特定の VM の DSC 拡張機能の状態を取得します。

  • Get-AzVMDscExtensionStatus コマンドレットは、DSC 拡張機能ハンドラーによって適用された DSC 構成の状態を取得します。 この処理は、単一の VM または VM のグループに対して実行できます。

  • Remove-AzVMDscExtension コマンドレットは、特定の VM から拡張機能ハンドラーを削除します。 このコマンドレットによって、構成が削除されること、WMF がアンインストールされること、または VM に適用されている設定が変更されることはないので留意してください。 このコマンドレットでは、拡張機能ハンドラーが削除されるだけです。

重要な考慮事項

Azure Resource Manager コマンドレットを使用する場合、いくつかの考慮事項に留意する必要があります。

  • Azure Resource Manager コマンドレットは動機的です。

  • ResourceGroupNameVMNameArchiveStorageAccountNameVersionLocation など、いくつかのパラメーターが必要です。

  • ArchiveResourceGroupName は省略可能なパラメーターです。 VM が作成されたリソース グループとは別のリソース グループにストレージ アカウントが属している場合、このパラメーターを指定します。

  • AutoUpdate スイッチを使用すると、最新バージョンが利用可能になったときに、拡張機能ハンドラーが自動的に更新されるようにできます。 WMF の新しいバージョンがリリースされると、このパラメーターによって VM で再起動が生じる可能性があります。

PowerShell コマンドレットでの構成

Azure DSC 拡張機能は DSC 構成ドキュメントを使用して、デプロイ時に Azure VM を直接構成することができます。 この手順ではノードが Automation に登録されません。 ノードは一元管理されないことに注意してください。

次のコードは、簡単な構成の例を示しています。 この例を使用するには、この構成を iisInstall.ps1 スクリプト ファイルとしてローカルに保存します。

configuration IISInstall
{
    node "localhost"
    {
        WindowsFeature IIS
        {
            Ensure = "Present"
            Name = "Web-Server"
        }
    }
}

次の PowerShell コマンドは、指定した VM に iisInstall.ps1 スクリプトを配置します。 さらにコマンドは構成を実行し、状態を報告します。

$resourceGroup = 'dscVmDemo'
$vmName = 'myVM'
$storageName = 'demostorage'
#Publish the configuration script to user storage
Publish-AzVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzVMDscExtension -Version '2.76' -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName 'iisInstall.ps1.zip' -AutoUpdate -ConfigurationName 'IISInstall'

Azure CLI でのデプロイ

Azure CLI を使用して、DSC 拡張機能を既存の VM にデプロイできます。 次の例は、Windows に VM をデプロイする方法を示しています。

Windows を実行する VM の場合、次のコマンドを使用します。

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSC \
  --publisher Microsoft.Powershell \
  --version 2.77 --protected-settings '{}' \
  --settings '{}'

Azure portal のデプロイ

Azure portal で DSC 拡張機能を設定するには、次の手順に従います。

  1. VM に移動します。

  2. [設定][拡張機能とアプリケーション] を選択します。

  3. [拡張機能][+ 追加] を選択します。

  4. [PowerShell Desired State Configuration] を選択し、[次へ] を選択します。

  5. DSC 拡張機能の次のパラメーターを構成します。

    注意

    既定の構成スクリプトを使用する場合、次のパラメーターのほとんどは、スクリプトではなく Azure portal で直接定義する必要があるので注意してください。

    • [Configuration Modules or Script] (構成のモジュールまたはスクリプト): (必須) VM の構成モジュールまたはスクリプト ファイルを指定します。

      構成モジュールおよびスクリプトは、構成スクリプトを含む .ps1 ファイルまたは .ps1 構成スクリプトがルートにある .zip ファイルが必要です。 .zip ファイルを使用する場合、すべての依存リソースを .zip ファイルのモジュール フォルダーに含める必要があります。 Azure PowerShell SDK に含まれているコマンドレット Publish-AzureVMDscConfiguration -OutputArchivePath を使用して、.zip ファイルを作成することができます。 .zip ファイルはユーザーの Blob Storage にアップロードされ、SAS トークンによってセキュリティで保護されます。

    • [Module-qualified Name of Configuration] (構成のモジュール修飾名): (必須) 1 つの.ps1 スクリプト ファイルに複数の構成関数を含めるには、この設定を指定します。 この設定では、.ps1 構成スクリプト ファイルの名前を入力し、その後、スラッシュ \ と構成関数の名前を入力します。 たとえば、.ps1 スクリプト ファイルの名前が configuration.ps1 で、構成の名前が IisInstall の場合、設定では configuration.ps1\IisInstall という値を入力します。

    • [Configuration Arguments] (構成引数): 構成関数が引数を受け取る場合、argumentName1=value1,argumentName2=value2 という形式で値を入力します。 この形式は、PowerShell コマンドレットまたは ARM テンプレートで構成引数を指定するために使用される形式とは異なります。

      注意

      構成引数は、既定の構成スクリプトで定義できます。

    • [Configuration Data PSD1 File] (構成データの PSD1 ファイル): 構成に .psd1 形式の構成データ ファイルが必要な場合、この設定を使用してデータ ファイルを選択し、ユーザーの Blob Storage にアップロードします。 構成データ ファイルは、Blob Storage で SAS トークンによって保護されます。

    • [WMF Version] (WMF バージョン): VM にインストールする Windows Management Framework のバージョンを指定します。 既定値である [最新] を選択すると、システムにより最新バージョンの WMF がインストールされます。 その他の設定可能な値は 4.0、5.0、5.1 などです。 設定可能な値は更新される可能性があります。

    • [Data Collection] (データ収集): DSC 拡張機能で VM に関するテレメトリを収集する場合、この設定を有効にします。 詳しくは、「Azure DSC extension data collection (Azure DSC 拡張機能のデータ収集)」をご覧ください。

    • [バージョン]: (必須) インストールする DSC 拡張機能のバージョンを指定します。 バージョンの詳細については、「Azure DSC 拡張機能のバージョン履歴」を参照してください。

    • [マイナー バージョンの自動アップグレード]: この設定は、コマンドレットの AutoUpdate スイッチに対応します。 この設定を構成すると、インストール時に DSC 拡張機能を最新バージョンに自動的に更新できます。 [はい] を指定すると、DSC 拡張機能ハンドラーで使用可能な最新バージョンが使用されます。 [いいえ] (既定値) を指定すると、[バージョン] 設定で指定したバージョンがインストールされます。

  6. パラメーターを構成した後、[確認と作成] を選択し、[作成] を選択します。

DSC 拡張機能のログ

C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number> で、VM の Azure DSC 拡張機能のログを確認できます。

次のステップ