Azure Automation State Configuration で DSC 構成をコンパイルする
Note
Azure Automation State Configuration は 2027 年 9 月 30 日に廃止されます。その日までに Azure Machine Configuration に切り替えてください。 詳細については、ブログ記事のお知らせを参照してください。 Azure マシンの構成サービスでは、DSC 拡張機能と Azure Automation State Configuration の機能のほか、顧客のフィードバックで最も一般的に要求されている機能が組み合わされています。 Azure マシンの構成には、Arc 対応サーバーによるハイブリッド マシンのサポートも含まれています。
注意事項
Azure Automation DSC for Linux は、2023 年 9 月 30 日に廃止されました。 詳しくは、お知らせをご覧ください。
Azure Automation State Configuration では、以下の方法で Desired State Configuration (DSC) 構成をコンパイルできます。
Azure State Configuration コンパイル サービス
- 対話型ユーザー インターフェイスを使用する初心者向けの方法
- ジョブの状態を簡単に追跡できる
Windows PowerShell
- ローカルのワークステーションまたはビルド サービスでの Windows PowerShell からの呼び出し
- 開発テスト パイプラインとの統合
- 複雑なパラメーター値の提供
- 大規模なノード データと非ノード データの操作
- パフォーマンスの大幅な向上
Azure Resource Manager テンプレートと Azure Desired State Configuration (DSC) 拡張機能を使用して、構成を Azure VM にプッシュすることもできます。 Azure DSC 拡張機能は、Azure VM エージェント フレームワークを使用して、Azure VM で実行される DSC 構成の配布、適用、およびレポート作成を行います。 Azure Resource Manager テンプレートを使用するコンパイルについて詳しくは、「Azure Resource Manager テンプレートを使用した Desired State Configuration 拡張機能」をご覧ください。
Azure State Configuration での DSC 構成のコンパイル
ポータル
- Automation アカウントで、[状態の構成 (DSC)] を選びます。
- [構成] タブを選んでから、コンパイルする構成の名前を選びます。
- [コンパイル] を選択します。
- 構成にパラメーターが含まれていない場合は、構成をコンパイルするかどうかを確認するメッセージが表示されます。 構成にパラメーターがある場合は、[構成のコンパイル] ペインが開くので、パラメーターの値を指定できます。
- コンパイル ジョブの状態を追跡できるように [コンパイル ジョブ] ページが表示されます。 このページを使用して、Azure Automation State Configuration プル サーバーに配置されたノード構成 (MOF 構成ドキュメント) を追跡することもできます。
Azure PowerShell
Start-AzAutomationDscCompilationJob を使用して、Windows PowerShell を使用したコンパイルを開始できます。 次のサンプル コードでは、SampleConfig という名前の DSC 構成のコンパイルを開始します。
Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'
Start-AzAutomationDscCompilationJob
からは、ジョブの状態を追跡するのに使用できるコンパイル ジョブ オブジェクトが返されます。 このコンパイル ジョブ オブジェクトは、Get-AzAutomationDscCompilationJob と共に使用してコンパイル ジョブの状態を確認すること、および Get-AzAutomationDscCompilationJobOutput と共に使用してそのストリーム (出力) を表示することが可能です。 次のサンプルでは、SampleConfig 構成のコンパイルを開始し、それが完了するまで待ってから、ストリームを表示します。
$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
基本パラメーターの宣言
DSC 構成のパラメーターの宣言 (パラメーターの種類、プロパティなど) は、Azure Automation Runbook と同じように動作します。 Runbook のパラメーターについて詳しくは、「Azure Automation で Runbook を開始する」をご覧ください。
次の例では、FeatureName
および IsPresent
パラメーターを使用して、コンパイル時に生成された ParametersExample.sample ノード構成のプロパティの値を特定します。
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 構成をコンパイルできます。
ポータル
ポータルで、 [コンパイル]をクリックすると、パラメーター値を入力できます。
Azure PowerShell
PowerShell には、ハッシュテーブル形式のパラメーターが必要です。この形式では、キーはパラメーター名と一致し、値はパラメーター値と一致します。
$Parameters = @{
'FeatureName' = 'Web-Server'
'IsPresent' = $False
}
Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters
PSCredential
オブジェクトをパラメーターとして渡す方法の詳細については、「資格情報資産」を参照してください。
Azure Automation で複合リソースを含む構成をコンパイルする
複合リソース機能によって、構成の内側で、入れ子のリソースとして DSC 構成を使用できます。 この機能により、1 つのリソースに複数の構成を適用できます。 複合リソースの詳細については、「複合リソース: リソースとしての DSC 構成の使用」を参照してください。
Note
複合リソースを含む構成が正しくコンパイルされるように、その複合リソースが依存するすべての DSC リソースを、まず Azure Automation にインポートする必要があります。 DSC 複合リソースの追加は、Azure Automation に任意の PowerShell モジュールを追加するのと同じです。 このプロセスは、「Azure Automation でモジュールを管理する」に記載されています。
Azure Automation で構成をコンパイルするときに ConfigurationData を管理する
組み込みの DSC パラメーターである ConfigurationData
を使用すると、PowerShell DSC を使用しているときに、環境固有の構成から構造上の構成を分離することができます。 詳細については、「PowerShell DSC で "環境" から "構造" を分離する」を参照してください。
Note
Azure Automation State Configuration でコンパイルするとき、ConfigurationData
を Azure PowerShell で使用することはできますが、Azure portal では使用できません。
次の DSC 構成の例では、$ConfigurationData
キーワードと $AllNodes
キーワードによって ConfigurationData
を使用しています。 この例には xWebAdministration モジュールも必要です。
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 を使用してコンパイルできます。 以下のクリプトでは、ConfigurationDataSample.MyVM1 と ConfigurationDataSample.MyVM3 という 2 つのノード構成が Azure Automation State Configuration プル サービスに追加されます。
$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 の資産を操作する
資産の参照方法は、Azure Automation State Configuration と Runbook の両方で同じです。 詳細については、次の記事をご覧ください。
資格情報資産
構成に PSCredential
オブジェクトを指定するパラメーターがある場合は、Get-AutomationPSCredential
を使って Azure Automation の資格情報資産の名前をコマンドレットに渡して、資格情報を取得します。 Azure Automation は、資格情報を構成に渡します。
ノードの構成で資格情報を安全に保つには、ノード構成の MOF ファイルで資格情報を暗号化します。 PowerShell DSC に、ノード構成 MOF の生成時にプレーン テキストで資格情報を出力するためのアクセス許可を付与する必要があります。 PowerShell DSC では、コンパイル ジョブによる MOF ファイルの生成後に、Azure Automation によってその全体が暗号化されていることは認識されません。
構成データを使って生成されるノード構成 MOF で、資格情報をプレーン テキストで出力しても問題ないことを、PowerShell DSC に通知できます。 DSC 構成に含まれていて、資格情報を使用するノード ブロック名ごとに、ConfigurationData
を介して PSDscAllowPlainTextPassword = $true
を渡す必要があります。
次の例は、Automation 資格情報資産を使用する DSC 構成の例です。
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 構成をコンパイルできます。 以下の PowerShell コードでは、CredentialSample.MyVM1 と CredentialSample.MyVM2 という 2 つのノード構成が Azure Automation State Configuration プル サーバーに追加されます。
$ConfigData = @{
AllNodes = @(
@{
NodeName = '*'
PSDscAllowPlainTextPassword = $True
},
@{
NodeName = 'MyVM1'
},
@{
NodeName = 'MyVM2'
}
)
}
Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData
Note
コンパイルが完了すると、次のようなエラー メッセージが表示される場合があります。The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported.
このメッセージは無視してかまいません。
Windows PowerShell で DSC 構成をコンパイルする
Windows PowerShell に DSC 構成をコンパイルする手順は、PowerShell DSC のドキュメント、「構成の作成、コンパイル、適用」に記述されています。 このプロセスは、開発者のワークステーションから実行することも、Azure DevOps などのビルド サービス内で実行することもできます。 その後、構成のコンパイルによって生成された MOF ファイルを、Azure State Configuration サービスにインポートできます。
Windows PowerShell でコンパイルする場合には、構成コンテンツに署名するオプションもあります。 署名されたノード構成は、DSC エージェントにより、管理対象ノードでローカルに検証されます。 検証によって、ノードに適用される構成が、承認済みソースからのものであることが保証されます。
Azure の外部でコンパイルされたノード構成をインポートすることもできます。 このインポートには、開発者のワークステーションからのコンパイルや Azure DevOps などのサービスでのコンパイルも含まれます。 このアプローチには、パフォーマンスや信頼性を含め、多数の利点があります。
Note
Azure Automation でノード構成ファイルをインポートできるためには、ファイルのサイズが 1 MB 以下である必要があります。
ノード構成の署名の詳細については、WMF 5.1 での機能強化の、構成とモジュールに署名する方法に関するページを参照してください。
Azure portal でノード構成をインポートする
Automation アカウントで、[構成管理] の [State Configuration (DSC)] を選びます。
[State Configuration (DSC)] ページで、[構成] タブを選んでから [追加] を選びます。
[インポート] ページで、[ノード構成ファイル] フィールドの横にあるフォルダー アイコンを選び、ローカル コンピューター上のノード構成 MOF ファイルを参照します。
[構成名] フィールドに名前を入力します。 この名前は、ノード構成のコンパイル元の構成の名前と一致する必要があります。
[OK] を選択します。
Azure PowerShell でノード構成をインポートする
Import-AzAutomationDscNodeConfiguration コマンドレットを使用して、ノード構成を Automation アカウントにインポートできます。
$importAzAutomationDscNodeConfigurationSplat = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
ConfigurationName = 'MyNodeConfiguration'
Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat
次のステップ
- 使用を開始するには、「Azure Automation State Configuration の使用を開始する」をご覧ください。
- DSC 構成をコンパイルしてターゲット ノードに割り当てる方法の詳細については、「Azure Automation State Configuration で DSC 構成をコンパイルする」をご覧ください。
- PowerShell コマンドレットのリファレンスについては、「Az.Automation」をご覧ください。
- 料金情報については、Azure Automation State Configuration の価格に関するページをご覧ください。
- 継続的デプロイ パイプラインで State Configuration を使う例については、「Chocolatey を使用して継続的配置を設定する」をご覧ください。