次の方法で共有


Azure Resource Manager テンプレートを使用した Desired State Configuration 拡張機能

注意

DSC 拡張機能は、2028 年 3 月 31 日に廃止されます。 その日までに Azure Machine Configuration に移動してください。 詳細については、ブログ記事のお知らせを参照してください。 Azure Machine Configuration サービスは、DSC 拡張機能、Azure Automation State Configuration、およびお客様からのフィードバックから一般的に要求される機能の特定の機能を組み合わせたものです。 Azure マシンの構成には、Arc 対応サーバーによるハイブリッド マシンのサポートも含まれています。

この記事では、Desired State Configuration (DSC) 拡張機能ハンドラーの Azure Resource Manager テンプレートについて説明します。

注意

スキーマの例に若干の違いがある可能性があります。 スキーマの変更は 2016 年 10 月 のリリースで発生しました。 詳しくは、以前の形式からの更新に関する記事をご覧ください。

注意

New! より高速な診断のために VM アシストを試す' Windows 用の VM アシスト または Linux 用の VM アシストを実行することをお勧めします。 これらのスクリプト ベースの診断ツールは、Azure VM ゲスト エージェントと VM の全体的な正常性に影響する一般的な問題を特定するのに役立ちます。

仮想マシン用 Bicep のサンプル例

DSC 拡張機能は、既定の拡張機能プロパティを継承します。 詳しくは、「VirtualMachineExtension class (VirtualMachineExtension クラス)」をご覧ください。

@description('URI of the configuration package')
param configUri string

@description('first configuration parameter')
param arg1 string

@description('second configuration parameter')
@secure()
param arg2 string

var configName = split(split(configUri, '/')[4], '.')[0]

resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' existing = {
  name: srvName
}

resource configuration_dscext 'Microsoft.Compute/virtualMachines/extensions@2024-07-01' = {
  name: 'configurationname_dscext'
  parent: vm
  ___location: ___location
  properties: {
    publisher: 'Microsoft.Powershell'
    type: 'DSC'
    typeHandlerVersion: '2.77'
    autoUpgradeMinorVersion: true
    settings: {
      wmfVersion: 'latest'
      configuration: {
        url: configUri
        script: 'configurationname_dscext.ps1'
        function: 'configurationname_dscext'
      }
      configurationArguments: {
        arg1: arg1
      }
      advancedOptions: {
        rebootNodeIfNeeded: true
      }
    }
    protectedSettings: {
      configurationArguments: {
        arg2: arg2
      }
    }
  }
}

Windows 仮想マシン スケール セット用の Bicep 例

仮想マシン スケール セット ノードには、extensionProfile 属性を含むセクションがあります。 [拡張機能] の下に DSC 拡張機能の詳細を追加します。

仮想マシン スケール セットの拡張機能をデプロイするテンプレートの作成に関する最新の詳細については、「Microsoft.Compute virtualMachineScaleSets」ドキュメントを参照してください

DSC 拡張機能は、既定の拡張機能プロパティを継承します。 詳しくは、「VirtualMachineScaleSetExtension class (VirtualMachineScaleSetExtension クラス)」をご覧ください。

settings と protectedSettings

すべての設定は、VM の設定テキスト ファイルに保存されます。 settings の下に記載されているプロパティはパブリック プロパティです。 パブリック プロパティは、設定のテキスト ファイル内で暗号化されません。 protectedSettings に記載されているプロパティは証明書で暗号化され、VM 上の設定ファイルにプレーン テキストで表示されません。

構成に資格情報が必要な場合は、protectedSettings に資格情報を含めることができます。

"protectedSettings": {
    "configurationArguments": {
        "parameterOfTypePSCredential1": {
               "userName": "UsernameValue1",
               "password": "PasswordValue1"
        }
    }
}

Azure Storage での構成スクリプトの使用例

次の例は、DSC 拡張機能ハンドラーの概要に関する記事から引用したものです。 この例では、コマンドレットの代わりに Resource Manager テンプレートを使用して拡張機能をデプロイします。 IisInstall.ps1 の構成を保存し、.zip ファイル (例: iisinstall.zip) 内に配置してから、アクセス可能な URL にファイルをアップロードします。 この例では、Azure Blob Storage を使用しますが、.zip ファイルを任意の場所からダウンロードすることもできます。

Resource Manager テンプレートでは、次のコードにより、正しいファイルをダウンロードして適切な PowerShell 関数を実行するように VM に対して指示をします。

"settings": {
    "configuration": {
        "url": "https://demo.blob.core.windows.net/iisinstall.zip",
        "script": "IisInstall.ps1",
        "function": "IISInstall"
    }
},
"protectedSettings": {
    "configurationUrlSasToken": "odLPL/U1p9lvcnp..."
}

以前の形式からの更新

拡張機能の以前の形式の設定 (ModulesUrlModuleSourceModuleVersionConfigurationFunctionSasToken、または Properties の各パブリック プロパティを含むもの) は、自動的に拡張機能の現在の形式に対応します。 これらは以前と同じように動作します。

次のスキーマは、以前の設定スキーマの例を示したものです。

"settings": {
    "WMFVersion": "latest",
    "ModulesUrl": "https://UrlToZipContainingConfigurationScript.ps1.zip",
    "SasToken": "SAS Token if ModulesUrl points to private Azure Blob Storage",
    "ConfigurationFunction": "ConfigurationScript.ps1\\ConfigurationFunction",
    "Properties": {
        "ParameterToConfigurationFunction1": "Value1",
        "ParameterToConfigurationFunction2": "Value2",
        "ParameterOfTypePSCredential1": {
            "UserName": "UsernameValue1",
            "Password": "PrivateSettingsRef:Key1"
        },
        "ParameterOfTypePSCredential2": {
            "UserName": "UsernameValue2",
            "Password": "PrivateSettingsRef:Key2"
        }
    }
},
"protectedSettings": {
    "Items": {
        "Key1": "PasswordValue1",
        "Key2": "PasswordValue2"
    },
    "DataBlobUri": "https://UrlToConfigurationDataWithOptionalSasToken.psd1"
}

以前の形式と現在の形式の対応関係を次に示します。

現在のプロパティ名 対応する以前のスキーマ
settings.wmfVersion settings.WMFVersion
settings.configuration.url settings.ModulesUrl
settings.configuration.script settings.ConfigurationFunction の最初の部分 (\\ の前)
settings.configuration.function settings.ConfigurationFunction の 2 番目の部分 (\\ の後)
設定.構成.モジュール.名前 settings.ModuleSource
設定.構成.モジュール.バージョン settings.ModuleVersion
settings.configurationArguments settings.Properties
settings.configurationData.url protectedSettings.DataBlobUri (SAS トークンを使用しない)
設定.プライバシー.データ収集 設定.プライバシー.データ収集
settings.advancedOptions.downloadMappings settings.AdvancedOptions.DownloadMappings
protectedSettings.configurationArguments protectedSettings.Properties
protectedSettings.configurationUrlSasToken settings.SasToken
protectedSettings.configurationDataUrlSasToken protectedSettings.DataBlobUri の SAS トークン

トラブルシューティング

直面する可能性のあるいくつかのエラーとそのエラーの修正方法について説明します。

無効な値

Privacy.dataCollectionは「{0}」です。 利用可能な値は '', 'Enable', および 'Disable' のみです。 WmfVersionは'{0}'です。 指定できる値は … および 'latest' のみです。"

問題点: 指定した値が許可されていません。

解決策:無効な値を有効な値に変更してください。

無効な URL

「ConfigurationData.url は '{0}' です。」 これは有効なURLではありません。"DataBlobUri は '{0}' です。 Configuration.url は '{0}' です。有効な URL ではありません。 これは有効な URL ではありません)"

問題点: 指定した URL が無効です。

解決策:指定した URL すべてを確認してください。 拡張機能がリモート コンピューター上でアクセスできる有効な場所に、すべての URL が解決されることを確認します。

無効な ConfigurationArgument の型

"無効な configurationArguments の型 {0}"

問題点:ConfigurationArguments プロパティがハッシュ テーブル オブジェクトに解決できません。

解決策:ConfigurationArguments プロパティをハッシュ テーブルにしてください。 前の例に示されている形式に従います。 引用符、コンマ、中かっこに注意します。

ConfigurationArguments の重複

"Found duplicate arguments '{0}' in both public and protected configurationArguments (パブリックと保護対象の両方の configurationArguments で重複する引数 '{0}' が見つかりました)"

問題点:パブリック設定の ConfigurationArguments と保護された設定の ConfigurationArguments に同じ名前のプロパティが含まれています。

解決策:重複するプロパティのいずれかを削除してください。

不足しているプロパティ

"settings.Configuration.function requires that settings.configuration.url or settings.configuration.module is specified (settings.Configuration.function には、settings.configuration.url または settings.configuration.module の指定が必要です)"

"settings.Configuration.url requires that settings.configuration.script is specified (settings.Configuration.url には settings.configuration.script の指定が必要です)"

"settings.Configuration.script requires that settings.configuration.url is specified (settings.Configuration.script には settings.configuration.url の指定が必要です)"

"settings.Configuration.url requires that settings.configuration.function is specified (settings.Configuration.url には settings.configuration.function の指定が必要です)"

settings.configuration.url が指定されている必要があります (protectedSettings.ConfigurationUrlSasToken には settings.configuration.url の指定が必要です)

protectedSettings.ConfigurationDataUrlSasToken は settings.configurationData.url が指定されていることを必要とします。

問題点:定義したプロパティには、不足している別のプロパティが必要です。

解決策:

  • 不足しているプロパティを指定します。
  • 不足しているプロパティを必要とするプロパティを削除します。

次のステップ