Desired State Configuration 확장과 Azure Resource Manager 템플릿
참고 항목
DSC 확장을 사용하도록 설정하기 전에 최신 버전의 DSC가 이제 컴퓨터 구성이라는 기능으로 관리되는 일반 공급된다는 것을 알고 싶습니다. 컴퓨터 구성 기능에는 DSC(Desired State Configuration) 확장 처리기의 기능과 고객 피드백에서 가장 일반적으로 요청되는 기능이 포함됩니다. 머신 구성에는 Arc 지원 서버를 통한 하이브리드 컴퓨터 지원도 포함됩니다.
이 문서에서는 DSC(Desired State Configuration) 확장 처리기를 위한 Azure Resource Manager 템플릿에 대해 설명합니다.
참고 항목
약간 다른 스키마 예제가 제공될 수 있습니다. 스키마 변경은 2016년 10월 릴리스에서 수행되었습니다. 자세한 내용은 이전 형식에서 업데이트를 참조하세요.
VM에 대한 Bicep 예제
DSC 확장은 기본 확장 속성을 상속합니다. 자세한 내용은 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: {
configurationArguements: {
arg2: arg2
}
}
}
}
Windows 가상 머신 확장 집합에 대한 Bicep 예제
가상 머신 확장 집합 노드에는 extensionProfile 특성을 포함하는 섹션이 있습니다. 확장 아래에 DSC 확장의 세부 정보를 추가합니다.
Virtual Machine Scale Sets에 대한 확장을 배포하는 작성 템플릿에 대한 최신 세부 정보는 Microsoft.Compute virtualMachineScaleSets 문서를 참조하세요.
DSC 확장은 기본 확장 속성을 상속합니다. 자세한 내용은 VirtualMachineScaleSetExtension 클래스를 참조하세요.
설정 및 protectedSettings
모든 설정은 VM의 설정 텍스트 파일에 저장됩니다. 설정 아래에 나열된 속성은 공용 속성입니다. 공용 속성은 설정 텍스트 파일에서 암호화되지 않습니다. protectedSettings 아래에 나열된 속성은 인증서를 사용하여 암호화되므로 VM에서 설정 파일에 일반 텍스트로 표시되지 않습니다.
구성에 자격 증명이 필요한 경우 protectedSettings에 자격 증명을 포함할 수 있습니다.
"protectedSettings": {
"configurationArguments": {
"parameterOfTypePSCredential1": {
"userName": "UsernameValue1",
"password": "PasswordValue1"
}
}
}
Azure Storage의 구성 스크립트 사용 예제
다음 예제는 DSC 확장 처리기 개요에서 가져온 것입니다.
이 예제에서는 cmdlet 대신 Resource Manager 템플릿을 사용하여 확장을 배포합니다.
IisInstall.ps1 구성을 저장하고 .zip 파일(예: iisinstall.zip
)에 배치한 다음, 파일을 액세스 가능한 URL에 업로드합니다.
이 예제에서는 Azure Blob Storage를 사용하지만 임의의 위치에서 .zip 파일을 다운로드할 수 있습니다.
Resource Manager 템플릿에서 다음 코드는 VM에 올바른 파일을 다운로드하고 적절한 PowerShell 함수를 실행하도록 지시합니다.
"settings": {
"configuration": {
"url": "https://demo.blob.core.windows.net/iisinstall.zip",
"script": "IisInstall.ps1",
"function": "IISInstall"
}
},
"protectedSettings": {
"configurationUrlSasToken": "odLPL/U1p9lvcnp..."
}
이전 형식에서 업데이트
이전 형식의 모든 설정(공용 속성 ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken 또는 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의 두 번째 부분(\\ 이후) |
settings.configuration.module.name | settings.ModuleSource |
settings.configuration.module.version | settings.ModuleVersion |
settings.configurationArguments | settings.Properties |
settings.configurationData.url | protectedSettings.DataBlobUri(SAS 토큰 없이) |
settings.privacy.dataCollection | settings.Privacy.dataCollection |
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}’입니다. 유효한 URL이 아닙니다.” “Configuration.url이 ‘{0}’입니다. 유효한 URL이 아닙니다."
문제: 제공된 URL이 잘못되었습니다.
해결 방법: 제공된 모든 URL을 확인합니다. 모든 URL이 원격 컴퓨터의 확장 기능에서 액세스할 수 있는 올바른 위치인지 확인합니다.
잘못된 ConfigurationArgument 형식
“잘못된 configurationArguments 형식 {0}입니다.”
문제점: ConfigurationArguments 속성을 해시 테이블 개체로 확인할 수 없습니다.
해결 방법: ConfigurationArguments 속성을 해시 테이블로 지정합니다. 위의 예제에 제공된 형식을 따릅니다. 따옴표, 쉼표 및 중괄호를 확인합니다.
중복 ConfigurationArguments
“공용 및 보호된 configurationArguments에 중복 인수 ‘{0}’이 있습니다.”
문제점: 공용 설정의 ConfigurationArguments 및 보호된 설정의 ConfigurationArguments에 동일한 이름의 속성이 포함되어 있습니다.
해결 방법: 중복된 속성 중 하나를 제거합니다.
누락된 속성
“settings.Configuration.function을 사용하려면 settings.configuration.url 또는 settings.configuration.module을 지정해야 합니다.”
“settings.Configuration.url을 사용하려면 settings.configuration.script를 지정해야 합니다.”
“settings.Configuration.script를 사용하려면 settings.configuration.url을 지정해야 합니다.”
“settings.Configuration.url을 사용하려면 settings.configuration.function을 지정해야 합니다.”
“protectedSettings.ConfigurationUrlSasToken을 사용하려면 settings.configuration.url을 지정해야 합니다.”
“protectedSettings.ConfigurationDataUrlSasToken을 사용하려면 settings.configurationData.url을 지정해야 합니다.”
문제점: 정의된 속성에 누락된 다른 속성이 필요합니다.
솔루션:
- 누락된 속성을 제공합니다.
- 누락된 속성을 요구하는 속성을 제거합니다.
다음 단계
- Azure DSC 확장에 Virtual Machine Scale Sets 사용에 대해 자세히 알아봅니다.
- DSC의 보안 자격 증명 관리에 대해 자세히 알아봅니다.
- Azure DSC 확장 처리기에 대한 소개를 참조하세요.
- PowerShell DSC에 대한 자세한 내용은 PowerShell 설명서 센터를 참조하세요.