Azure Automation State Configuration で DSC 構成をコンパイルするCompile DSC configurations in Azure Automation State Configuration

Azure Automation State Configuration では、以下の方法で Desired State Configuration (DSC) 構成をコンパイルできます。You can compile Desired State Configuration (DSC) configurations in Azure Automation State Configuration in the following ways:

  • Azure State Configuration コンパイル サービスAzure State Configuration compilation service

    • 対話型ユーザー インターフェイスを使用する初心者向けの方法Beginner method with interactive user interface
    • ジョブの状態を簡単に追跡できるEasily track job state
  • Windows PowerShellWindows PowerShell

    • ローカルのワークステーションまたはビルド サービスでの Windows PowerShell からの呼び出しCall from Windows PowerShell on local workstation or build service
    • 開発テスト パイプラインとの統合Integrate with development test pipeline
    • 複雑なパラメーター値の提供Provide complex parameter values
    • 大規模なノード データと非ノード データの操作Work with node and non-node data at scale
    • パフォーマンスの大幅な向上Significant performance improvement

Azure Resource Manager テンプレートと Azure Desired State Configuration (DSC) 拡張機能を使用して、構成を Azure VM にプッシュすることもできます。You can also use Azure Resource Manager templates with Azure Desired State Configuration (DSC) extension to push configurations to your Azure VMs. Azure DSC 拡張機能は、Azure VM エージェント フレームワークを使用して、Azure VM で実行される DSC 構成の配布、適用、およびレポート作成を行います。The Azure DSC extension uses the Azure VM Agent framework to deliver, enact, and report on DSC configurations running on Azure VMs. Azure Resource Manager テンプレートを使用するコンパイルについて詳しくは、「Azure Resource Manager テンプレートを使用した Desired State Configuration 拡張機能」をご覧ください。For compilation details using Azure Resource Manager templates, see Desired State Configuration extension with Azure Resource Manager templates.

Azure State Configuration での DSC 構成のコンパイルCompile a DSC configuration in Azure State Configuration

ポータルPortal

  1. Automation アカウントで、 [状態の構成 (DSC)] をクリックします。In your Automation account, click State configuration (DSC).
  2. [構成] タブをクリックして、コンパイルする構成の名前をクリックします。Click on the Configurations tab, then click on the configuration name to compile.
  3. [コンパイル] をクリックします。Click Compile.
  4. 構成にパラメーターが含まれていない場合は、構成をコンパイルするかどうかを確認するメッセージが表示されます。If the configuration has no parameters, you're prompted to confirm if you want to compile it. 構成にパラメーターが含まれている場合は、 [構成のコンパイル] ブレードが開くので、パラメーター値を入力できます。If the configuration has parameters, the Compile Configuration blade opens so that you can provide parameter values.
  5. コンパイル ジョブの状態を追跡できるように [コンパイル ジョブ] ページが表示されます。The Compilation Job page is opened so that you can track compilation job status. このページを使用して、Azure Automation State Configuration プル サーバーに配置されたノード構成 (MOF 構成ドキュメント) を追跡することもできます。You can also use this page to track the node configurations (MOF configuration documents) placed on the Azure Automation State Configuration pull server.

Azure PowerShellAzure PowerShell

Start-AzAutomationDscCompilationJob を使用して、Windows PowerShell を使用したコンパイルを開始できます。You can use Start-AzAutomationDscCompilationJob to start compiling with Windows PowerShell. 次のサンプル コードでは、SampleConfig という名前の DSC 構成のコンパイルを開始します。The following sample code begins compilation of a DSC configuration called SampleConfig.

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

Start-AzAutomationDscCompilationJob からは、ジョブの状態を追跡するのに使用できるコンパイル ジョブ オブジェクトが返されます。Start-AzAutomationDscCompilationJob returns a compilation job object that you can use to track job status. このコンパイル ジョブ オブジェクトは、Get-AzAutomationDscCompilationJob と共に使用してコンパイル ジョブの状態を確認すること、および Get-AzAutomationDscCompilationJobOutput と共に使用してそのストリーム (出力) を表示することが可能です。You can then use this compilation job object with Get-AzAutomationDscCompilationJob to determine the status of the compilation job, and Get-AzAutomationDscCompilationJobOutput to view its streams (output). 次のサンプルでは、SampleConfig 構成のコンパイルを開始し、コンパイルが完了するまで待機した後、ストリームを表示します。The following sample starts compilation of the SampleConfig configuration, waits until it has completed, and then displays its streams.

$CompilationJob = Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

while($null -eq $CompilationJob.EndTime -and $null -eq $CompilationJob.Exception)
{
    $CompilationJob = $CompilationJob | Get-AzAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzAutomationDscCompilationJobOutput –Stream Any

基本パラメーターの宣言Declare basic parameters

DSC 構成のパラメーターの宣言 (パラメーターの種類、プロパティなど) は、Azure Automation Runbook と同じように動作します。Parameter declaration in DSC configurations, including parameter types and properties, works the same as in Azure Automation runbooks. Runbook のパラメーターの詳細については、「 Azure Automation での Runbook を開始する 」を参照してください。See Starting a runbook in Azure Automation to learn more about runbook parameters.

次の例では、FeatureName および IsPresent パラメーターを使用して、コンパイル時に生成された ParametersExample.sample ノード構成のプロパティの値を特定します。The following example uses FeatureName and IsPresent parameters to determine the values of properties in the ParametersExample.sample node configuration, generated during compilation.

Configuration ParametersExample
{
    param(
        [Parameter(Mandatory=$true)]
        [string] $FeatureName,

        [Parameter(Mandatory=$true)]
        [boolean] $IsPresent
    )

    $EnsureString = 'Present'
    if($IsPresent -eq $false)
    {
        $EnsureString = 'Absent'
    }

    Node 'sample'
    {
        WindowsFeature ($FeatureName + 'Feature')
        {
            Ensure = $EnsureString
            Name   = $FeatureName
        }
    }
}

Azure Automation State Configuration ポータルまたは Azure PowerShell で、基本パラメーターを使用する DSC 構成をコンパイルできます。You can compile DSC configurations that use basic parameters in the Azure Automation State Configuration portal or with Azure PowerShell.

ポータルPortal

ポータルで、 [コンパイル] をクリックすると、パラメーター値を入力できます。In the portal, you can enter parameter values after clicking Compile.

構成のコンパイル パラメーター

Azure PowerShellAzure PowerShell

PowerShell には、ハッシュテーブル形式のパラメーターが必要です。この形式では、キーはパラメーター名と一致し、値はパラメーター値と一致します。PowerShell requires parameters in a hashtable, where the key matches the parameter name and the value equals the parameter value.

$Parameters = @{
    'FeatureName' = 'Web-Server'
    'IsPresent' = $False
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters

PSCredential オブジェクトをパラメーターとして渡す方法の詳細については、「資格情報資産」を参照してください。For information about passing PSCredential objects as parameters, see Credential assets.

Azure Automation で複合リソースを含む構成をコンパイルするCompile configurations containing composite resources in Azure Automation

複合リソース機能によって、構成の内側で、入れ子のリソースとして DSC 構成を使用できます。The Composite Resources feature allows you to use DSC configurations as nested resources inside a configuration. この機能により、1 つのリソースに複数の構成を適用できます。This feature enables the application of multiple configurations to a single resource. Composite resources: Using a DSC configuration as a resource」 (複合リソース: リソースとしての DSC 構成の使用) を参照して、複合リソースの詳細について確認してください。See Composite resources: Using a DSC configuration as a resource to learn more about composite resources.

注意

複合リソースを含む構成が正しくコンパイルされるように、その複合リソースが依存するすべての DSC リソースを、まず Azure Automation にインポートする必要があります。So that configurations containing composite resources compile correctly, you must first import into Azure Automation any DSC resources that the composites rely upon. DSC 複合リソースの追加は、Azure Automation に任意の PowerShell モジュールを追加するのと同じです。Adding a DSC composite resource is no different from adding any PowerShell module to Azure Automation. このプロセスは、「Azure Automation でモジュールを管理する」に記載されています。This process is documented in Manage Modules in Azure Automation.

Azure Automation で構成をコンパイルするときに ConfigurationData を管理するManage ConfigurationData when compiling configurations in Azure Automation

組み込みの DSC パラメーターである ConfigurationData を使用すると、PowerShell DSC を使用しているときに、環境固有の構成から構造上の構成を分離することができます。ConfigurationData is a built-in DSC parameter that allows you to separate structural configuration from any environment-specific configuration while using PowerShell DSC. 詳細については、「PowerShell DSC で "環境" から "構造" を分離する」を参照してください。For more information, see Separating "What" from "Where" in PowerShell DSC.

注意

Azure Automation State Configuration でコンパイルするとき、ConfigurationData を Azure PowerShell で使用することはできますが、Azure portal では使用できません。When compiling in Azure Automation State Configuration, you can use ConfigurationData in Azure PowerShell but not in the Azure portal.

次の DSC 構成の例では、$ConfigurationData キーワードと $AllNodes キーワードによって ConfigurationData を使用しています。The following example DSC configuration uses ConfigurationData via the $ConfigurationData and $AllNodes keywords. この例には xWebAdministration モジュールも必要です。You also need the xWebAdministration module for this example.

Configuration ConfigurationDataSample
{
    Import-DscResource -ModuleName xWebAdministration -Name MSFT_xWebsite

    Write-Verbose $ConfigurationData.NonNodeData.SomeMessage

    Node $AllNodes.Where{$_.Role -eq 'WebServer'}.NodeName
    {
        xWebsite Site
        {
            Name         = $Node.SiteName
            PhysicalPath = $Node.SiteContents
            Ensure       = 'Present'
        }
    }
}

上記の DSC 構成は、Windows PowerShell を使用してコンパイルできます。You can compile the preceding DSC configuration with Windows PowerShell. 以下のスクリプトでは、2 つのノード構成が Azure Automation State Configuration プル サービスに追加されます。ConfigurationDataSample.MyVM1ConfigurationDataSample.MyVM3The following script adds two node configurations to the Azure Automation State Configuration pull service: ConfigurationDataSample.MyVM1 and ConfigurationDataSample.MyVM3.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = 'MyVM1'
            Role = 'WebServer'
        },
        @{
            NodeName = 'MyVM2'
            Role = 'SQLServer'
        },
        @{
            NodeName = 'MyVM3'
            Role = 'WebServer'
        }
    )

    NonNodeData = @{
        SomeMessage = 'I love Azure Automation State Configuration and DSC!'
    }
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ConfigurationDataSample' -ConfigurationData $ConfigData

コンパイル時に Azure Automation の資産を操作するWork with assets in Azure Automation during compilation

資産の参照方法は、Azure Automation State Configuration と Runbook の両方で同じです。Asset references are the same in both Azure Automation State Configuration and runbooks. 詳細については、「For more information, see the following:

資格情報資産Credential assets

Azure Automation の DSC 構成は、Get-AutomationPSCredential コマンドレットを使用して Automation の資格情報資産を参照できます。DSC configurations in Azure Automation can reference Automation credential assets using the Get-AutomationPSCredential cmdlet. 構成に PSCredential オブジェクトを指定するパラメーターがある場合は、Azure Automation の資格情報資産の文字列名をコマンドレットに渡して資格情報を取得することで、Get-AutomationPSCredential を使用します。If a configuration has a parameter that specifies a PSCredential object, use Get-AutomationPSCredential by passing the string name of an Azure Automation credential asset to the cmdlet to retrieve the credential. その後、PSCredential オブジェクトを必要とするパラメーターに対して、そのオブジェクトを使用します。Then make use of that object for the parameter requiring the PSCredential object. バックグラウンドで、この名前の Azure Automation 資格情報資産が取得され、構成に渡されます。Behind the scenes, the Azure Automation credential asset with that name is retrieved and passed to the configuration. 下の例に、このシナリオの動作を示します。The example below shows this scenario in action.

ノード構成 (MOF 構成ドキュメント) で資格情報を安全に保持するには、ノード構成 MOF ファイルで資格情報を暗号化する必要があります。Keeping credentials secure in node configurations (MOF configuration documents) requires encrypting the credentials in the node configuration MOF file. 現在のところ、PowerShell DSC アクセス許可を指定し、ノード構成 MOF の生成時にプレーン テキストで資格情報を出力する必要があります。Currently you must give PowerShell DSC permission to output credentials in plain text during node configuration MOF generation. PowerShell DSC では、コンパイル ジョブによる生成後に、Azure Automation によって MOF ファイル全体が暗号化されることが認識されません。PowerShell DSC is not aware that Azure Automation encrypts the entire MOF file after its generation through a compilation job.

構成データを使用すると、生成されたノード構成 MOF に資格情報をプレーン テキストで出力することの許可を PowerShell DSC に通知できます。You can tell PowerShell DSC that it is okay for credentials to be outputted in plain text in the generated node configuration MOFs using configuration Data. DSC 構成に含まれていて、資格情報を使用するノード ブロック名ごとに、ConfigurationData を介して PSDscAllowPlainTextPassword = $true を渡す必要があります。You should pass PSDscAllowPlainTextPassword = $true via ConfigurationData for each node block name that appears in the DSC configuration and uses credentials.

次の例は、Automation 資格情報資産を使用する DSC 構成の例です。The following example shows a DSC configuration that uses an Automation credential asset.

Configuration CredentialSample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    $Cred = Get-AutomationPSCredential 'SomeCredentialAsset'

    Node $AllNodes.NodeName
    {
        File ExampleFile
        {
            SourcePath      = '\\Server\share\path\file.ext'
            DestinationPath = 'C:\destinationPath'
            Credential      = $Cred
        }
    }
}

PowerShell を使用して上記の DSC 構成をコンパイルできます。You can compile the preceding DSC configuration with PowerShell. 以下の PowerShell コードでは、2 つのノード構成が Azure Automation State Configuration プル サーバーに追加されます。(CredentialSample.MyVM1CredentialSample.MyVM2)。The following PowerShell code adds two node configurations to the Azure Automation State Configuration pull server: CredentialSample.MyVM1 and CredentialSample.MyVM2.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = '*'
            PSDscAllowPlainTextPassword = $True
        },
        @{
            NodeName = 'MyVM1'
        },
        @{
            NodeName = 'MyVM2'
        }
    )
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData

注意

コンパイルが完了すると、The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. というエラー メッセージが表示される場合があります。このメッセージは無視してかまいません。When compilation is complete, you might receive the error message The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. You can safely ignore this message.

Windows PowerShell で DSC 構成をコンパイルするCompile your DSC configuration in Windows PowerShell

Windows PowerShell に DSC 構成をコンパイルする手順は、PowerShell DSC のドキュメント、「構成の作成、コンパイル、適用」に記述されています。The process to compile DSC configurations in Windows PowerShell is included in the PowerShell DSC documentation Write, Compile, and Apply a Configuration. このプロセスは、開発者のワークステーションから実行することも、Azure DevOps などのビルド サービス内で実行することもできます。You can execute this process from a developer workstation or within a build service, such as Azure DevOps. その後、構成のコンパイルによって生成された MOF ファイルを、Azure State Configuration サービスにインポートできます。You can then import the MOF files produced by compiling the configuration into the Azure State Configuration service.

Windows PowerShell でコンパイルする場合には、構成コンテンツに署名するオプションもあります。Compiling in Windows PowerShell also provides the option to sign configuration content. 署名されたノード構成は、DSC エージェントにより、管理対象ノードでローカルに検証されます。The DSC agent verifies a signed node configuration locally on a managed node. 検証によって、ノードに適用される構成が、承認済みソースからのものであることが保証されます。Verification ensures that the configuration applied to the node comes from an authorized source.

Azure の外部でコンパイルしたノード構成 (MOF ファイル) をインポートすることもできます。You can also import node configurations (MOF files) that have been compiled outside of Azure. このインポートには、開発者のワークステーションからのコンパイルや Azure DevOps などのサービスでのコンパイルも含まれます。The import includes compilation from a developer workstation or in a service such as Azure DevOps. このアプローチには、パフォーマンスや信頼性を含め、多数の利点があります。This approach has multiple advantages, including performance and reliability.

注意

Azure Automation でノード構成ファイルをインポートできるためには、ファイルのサイズが 1 MB 以下である必要があります。A node configuration file must be no larger than 1 MB to allow Azure Automation to import it.

ノード構成の署名の詳細については、WMF 5.1 での機能強化の、構成とモジュールに署名する方法に関するページを参照してください。For more information about signing of node configurations, see Improvements in WMF 5.1 - How to sign configuration and module.

Azure portal でノード構成をインポートするImport a node configuration in the Azure portal

  1. お使いの Automation アカウントで、 [構成管理][状態の構成 (DSC)] をクリックします。In your Automation account, click State configuration (DSC) under Configuration Management.

  2. [状態の構成 (DSC)] ページで [構成] タブをクリックして、 [追加] をクリックします。On the State configuration (DSC) page, click on the Configurations tab, then click Add.

  3. [インポート] ページで、 [ノード構成ファイル] フィールドの横にあるフォルダー アイコンをクリックして、ローカル コンピューター上のノード構成の MOF ファイルを参照します。On the Import page, click the folder icon next to the Node Configuration File field to browse for a node configuration MOF file on your local computer.

    ローカル ファイルの参照

  4. [構成名] フィールドに名前を入力します。Enter a name in the Configuration Name field. この名前は、ノード構成のコンパイル元の構成の名前と一致する必要があります。This name must match the name of the configuration from which the node configuration was compiled.

  5. [OK] をクリックします。Click OK.

Azure PowerShell でノード構成をインポートするImport a node configuration with Azure PowerShell

Import-AzAutomationDscNodeConfiguration コマンドレットを使用して、ノード構成を Automation アカウントにインポートできます。You can use the Import-AzAutomationDscNodeConfiguration cmdlet to import a node configuration into your Automation account.

Import-AzAutomationDscNodeConfiguration -AutomationAccountName 'MyAutomationAccount' -ResourceGroupName 'MyResourceGroup' -ConfigurationName 'MyNodeConfiguration' -Path 'C:\MyConfigurations\TestVM1.mof'

次のステップNext steps