Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание
Расширение DSC будет прекращено 31 марта 2028 г. Перейдите к конфигурации машины Azure к этой дате. Подробнее см. в записи блога с объявлением. Служба конфигурации машин Azure объединяет некоторые функции расширения DSC, конфигурации состояния службы автоматизации Azure и часто запрашиваемые функции из отзывов клиентов. Конфигурация компьютера Azure также включает поддержку гибридных компьютеров с помощью серверов с поддержкой Arc.
Эта статья описывает шаблон Azure Resource Manager для обработчика расширений "Конфигурация желаемого состояния (DSC)".
Примечание
Вы можете столкнуться с немного отличающимися примерами схем. Изменение в схеме произошло в выпуске октябрь 2016 года. Для получения подробной информации см. Update from a previous format.
Примечание
Попробуйте использовать виртуальную машину для ускорения диагностики. Рекомендуется запустить Ассистент виртуальных машин для Windows или Ассистент виртуальных машин для Linux. Эти средства диагностики на основе скриптов помогают выявить распространенные проблемы, влияющие на гостевой агент виртуальной машины Azure и общую работоспособность виртуальных машин.
Если у вас возникли проблемы с производительностью виртуальных машин, перед обращением в службу поддержки запустите эти средства.
Пример 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: {
configurationArguments: {
arg2: arg2
}
}
}
}
Пример использования Bicep для масштабируемых наборов виртуальных машин Windows
Узел набора масштабируемых виртуальных машин имеет раздел, который включает атрибут extensionProfile. Под расширения добавьте детали для расширения DSC.
Для получения последних сведений о создании шаблонов, которые разворачивают расширения для масштабируемых наборов виртуальных машин, см. документ Microsoft.Compute virtualMachineScaleSets.
Расширение DSC наследует свойства по умолчанию от расширения. Для получения дополнительной информации см. класс VirtualMachineScaleSetExtension.
Параметры и защищённыеПараметры
Все настройки сохраняются в текстовом файле настроек на виртуальной машине. Свойства, перечисленные в разделе settings, являются общедоступными. В файле настроек текстовые свойства не зашифрованы. Свойства, перечисленные в разделе protectedSettings , шифруются с помощью сертификата и не отображаются в виде обычного текста в файле параметров на виртуальной машине.
Если для конфигурации требуются учетные данные, вы можете включить их в protectedSettings:
"protectedSettings": {
"configurationArguments": {
"parameterOfTypePSCredential1": {
"userName": "UsernameValue1",
"password": "PasswordValue1"
}
}
}
Пример использования скрипта конфигурации в Azure Storage
Представленный ниже пример взят из обзора обработчика расширения DSC.
Этот пример использует шаблоны Resource Manager вместо командлетов для развертывания расширения.
Сохраните конфигурацию IisInstall.ps1, поместите её в .zip файл (например: iisinstall.zip), а затем загрузите файл по доступному URL.
В этом примере используется хранилище Azure Blob, но вы можете скачать .zip файлы из любого произвольного местоположения.
В шаблоне диспетчера ресурсов следующий код инструктирует виртуальную машину загрузить правильный файл, а затем выполнить соответствующую функцию 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 | настройки.ModulesUrl |
| настройки.конфигурация.скрипт | Первая часть настроек.ConfigurationFunction (до \\) |
| настройки.конфигурация.функция | Вторая часть настроек.ConfigurationFunction (после \\) |
| настройки.конфигурация.модуль.имя | настройки.ИсточникМодуля |
| настройки.конфигурация.модуль.версия | настройки.МодульВерсия |
| settings.configurationArguments | settings.Properties |
| settings.configurationData.url | protectedSettings.DataBlobUri (без SAS токена) |
| settings.privacy.dataCollection | settings.Privacy.dataCollection |
| настройки.расширенныеОпции.загрузитьСоответствия | настройки.РасширенныеОпции.ЗагрузитьСоответствия |
| protectedSettings.configurationArguments | protectedSettings.Properties |
| protectedSettings.configurationUrlSasToken | настройки.SasToken |
| protectedSettings.configurationDataUrlSasToken | Маркер SAS из protectedSettings.DataBlobUri |
Устранение неполадок
Вот некоторые ошибки, с которыми вы можете столкнуться, и способы их исправить.
Недопустимые значения
"Сбор данных конфиденциальности — '{0}'." Единственными возможными значениями являются "", "Включить" и "Отключить". "WmfVersion имеет значение "{0}". Единственно возможные значения… и "последний".
Проблема: предоставленное значение не допускается.
Решение: Измените недопустимое значение на допустимое.
Неверный URL
Значение ConfigurationData.url — '{0}'. Это недопустимый URL" "DataBlobUri - '{0}'. Это недействительный URL-адрес" "Configuration.url равен '{0}'. Это недействительный URL.
Проблема: предоставленный URL недействителен.
Решение. Проверьте все предоставленные URL-адреса. Убедитесь, что все URL-адреса ведут к допустимым местоположениям, к которым расширение может получить доступ на удаленной машине.
Недопустимый тип ConfigurationArgument
Недопустимый тип configurationArguments {0}
Проблема: Свойство ConfigurationArguments не может быть преобразовано в объект хеш-таблицы.
Решение: Сделайте свойство ConfigurationArguments хеш-таблицей. Следуйте формату, указанному в предыдущих примерах. Следите за кавычками, запятыми и фигурными скобками.
Дублирующие аргументы конфигурации
"Обнаружены дублирующиеся аргументы '{0}' как в публичных, так и в защищенных configurationArguments"
Проблема: ConfigurationArguments в публичных настройках и ConfigurationArguments в защищённых настройках имеют свойства с одинаковыми именами.
Решение: Удалите одно из дублирующихся свойств.
Отсутствующие свойства
Функция settings.Configuration требует указания либо settings.configuration.url, либо settings.configuration.module.
settings.Configuration.url требует, чтобы settings.configuration.script был указан
settings.Configuration.script требует указания settings.configuration.url
Требуется, чтобы settings.configuration.function был указан для settings.Configuration.url.
Для protectedSettings.ConfigurationUrlSasToken требуется указание settings.configuration.url.
protectedSettings.ConfigurationDataUrlSasToken требует, чтобы settings.configurationData.url был указан.
Проблема: Определенному свойству требуется другое свойство, которое отсутствует.
Solutions:
- Предоставьте недостающую собственность.
- Удалите свойство, которое зависит от недостающего свойства.
Следующие шаги
- Узнайте об использовании масштабируемых наборов виртуальных машин с расширением Azure DSC.
- Узнайте больше о надёжном управлении учетными данными DSC.
- Получите ознакомление с обработчиком расширений Azure DSC.
- Дополнительные сведения о PowerShell DSC см. в центре документации PowerShell.