Расширение Desired State Configuration (DSC) с использованием шаблонов Azure Resource Manager
Примечание.
Прежде чем включить расширение DSC, мы хотели бы знать, что новая версия DSC теперь общедоступна, управляемая функцией с именем компьютера. Функция конфигурации компьютера включает функции обработчика расширения требуемой конфигурации состояния (DSC) и наиболее часто запрашиваемые функции из отзывов клиентов. Конфигурация компьютера также включает поддержку гибридных компьютеров с помощью серверов с поддержкой Arc.
В этой статье описывается шаблон Azure Resource Manager для обработчика расширения Desired State Configuration (DSC).
Примечание.
Вы можете встретить немного отличающиеся примеры схемы. Изменение в схеме произошло в выпуске за октябрь 2016 года. Дополнительные сведения см. в разделе об обновлении предыдущего формата.
Пример 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
}
}
}
}
Пример Bicep для масштабируемых наборов виртуальных машин Windows
Узел масштабируемого набора виртуальных машин содержит раздел, включающий атрибут extensionProfile . В разделе extensions добавьте данные о расширении DSC.
Последние сведения о создании шаблонов, которые развертывают расширения для Масштабируемые наборы виртуальных машин, см. в документе Microsoft.Compute virtualMachineScaleSets
Расширение DSC наследует свойства расширения по умолчанию. Дополнительные сведения см. в статье о классе VirtualMachineScaleSetExtension.
Параметры и защищенныеSettings
Все параметры сохраняются в текстовом файле параметров на виртуальной машине. Свойства, указанные в разделе settings, общедоступные. Общедоступные свойства не зашифрованы в текстовом файле параметров. Свойства, указанные в разделе protectedSettings, зашифрованы с помощью сертификата, а это значит, что они не отображаются как обычный текст в файле параметров на виртуальной машине.
Если для конфигурации нужны учетные данные, их можно добавить в раздел protectedSettings.
"protectedSettings": {
"configurationArguments": {
"parameterOfTypePSCredential1": {
"userName": "UsernameValue1",
"password": "PasswordValue1"
}
}
}
Пример с использованием скрипта конфигурации в службе хранилища Azure
Указанный ниже пример основан на примере конфигурации в статье Общие сведения об обработчике расширения Desired State Configuration в Azure.
В этом примере для развертывания расширения используются шаблоны Resource Manager, а не командлеты.
Сохраните конфигурацию IisInstall.ps1, добавьте ее в ZIP-файл (пример: iisinstall.zip
) и передайте файл на доступный URL-адрес.
В этом примере используется хранилище BLOB-объектов Azure, но ZIP-файл можно скачать из любого произвольного расположения.
В шаблоне Resource Manager следующий код указывает виртуальной машине скачать правильный файл и выполнить соответствующую функцию 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 выглядела следующим образом:
"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 (before \\) |
settings.configuration.function | Вторая часть свойства settings.ConfigurationFunction (after \\) |
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 | Маркер SAS из свойства protectedSettings.DataBlobUri |
Устранение неполадок
Ниже приведены некоторые общие ошибки и способы их устранения.
Недопустимые значения
"Privacy.dataCollection имеет значение "{0}". Единственные возможные значения это "Enable" и "Disable". "WmfVersion имеет значение "{0}". Возможные значения: … и "latest".
Проблема: предоставленное значение не допускается.
Решение. Замените недопустимое значение допустимым.
Недопустимый URL-адрес.
"ConfigurationData.url имеет значение "{0}". Это недопустимый URL-адрес." "DataBlobUri имеет значение "{0}". Это недопустимый URL-адрес." "Configuration.url имеет значение "{0}". This is not a valid URL" (Значение свойства Configuration.url — "{0}". Это недопустимый URL-адрес).
Проблема: указанный URL-адрес недействителен.
Решение. Проверьте все указанные URL-адреса. Убедитесь, что все URL-адреса разрешаются в допустимые расположения, к которым расширение может получить доступ на удаленном компьютере.
Недопустимый тип свойства ConfigurationArgument
"Недопустимый тип ConfigurationArgument: {0}"
Проблема. Невозможно разрешить свойство ConfigurationArguments в объект Hash table.
Решение. Задайте для свойства ConfigurationArguments тип Hash table. Следуйте формату из приведенного выше примеров. Обращайте внимание на кавычки, запятые и скобки.
Повторяющееся свойство ConfigurationArguments
"В общедоступном и защищенном свойстве configurationArguments найден повторяющийся аргумент "{0}"
Проблема. Свойства ConfigurationArguments из общедоступной схемы settings и ConfigurationArguments из защищенной схемы settings имеют свойства с одинаковыми именами.
Решение. Удалите одно из повторяющихся свойств.
Отсутствующие свойства
"settings.сonfiguration.function requires that configuration.url or settings.configuration.module is specified" (Для параметра settings.configuration.function требуется указать свойство settings.configuration.url или configuration.module)
"settings.сonfiguration.url requires that settings.сonfiguration.script is specified" (Для параметра settings.сonfiguration.url требуется указать свойство settings.сonfiguration.script)
"settings.сonfiguration.script requires that settings.сonfiguration.url is specified" (Для параметра settings.сonfiguration.script требуется указать свойство settings.сonfiguration.url)
"settings.сonfiguration.url requires that settings.сonfiguration.function is specified" (Для параметра settings.сonfiguration.function требуется указать свойство settings.сonfiguration.url)
"protectedSettings.ConfigurationUrlSasToken.url requires that settings.сonfiguration.function is specified" (Для параметра protectedSettings.ConfigurationUrlSasToken.url требуется указать свойство settings.сonfiguration.url)
"protectedSettings.ConfigurationDataUrlSasToken.url requires that settings.сonfiguration.function is specified" (Для параметра protectedSettings.ConfigurationDataUrlSasToken.url требуется указать свойство settings.сonfiguration.url)
Проблема. Для заданного свойства требуется другое свойство, которое отсутствует.
Решения:
- Укажите отсутствующее свойство.
- Удалите свойство, требующее отсутствующего свойства.
Следующие шаги
- Узнайте больше об использовании наборов масштабирования виртуальных машин с помощью расширения Azure DSC.
- Получите дополнительные сведения о безопасном управлении учетными данными посредством DSC.
- Ознакомьтесь с общими сведениями об обработчике расширения Desired State Configuration в Azure.
- Дополнительные сведения о PowerShell DSC см. в центре документации по PowerShell.