Компилирование конфигураций DSC в службе настройки состояния службы автоматизации Azure
Примечание.
служба автоматизации Azure конфигурация состояния будет прекращена 30 сентября 2027 г.Конфигурация компьютера Azure по этой дате. Дополнительные сведения см. в публикации блога. Служба конфигурации компьютера Azure объединяет функции расширения DSC, служба автоматизации Azure конфигурации состояния и наиболее часто запрашиваемые функции из отзывов клиентов. Конфигурация компьютера Azure также включает поддержку гибридных компьютеров с помощью серверов с поддержкой Arc.
Внимание
служба автоматизации Azure DSC для Linux вышел на пенсию 30 сентября 2023 года. Дополнительные сведения см. в объявлении о выпуске.
Вы можете компилировать конфигурации службы настройки требуемого состояния (DSC) следующими способами с помощью службы настройки состояния службы автоматизации Azure.
С помощью службы компиляции Azure State Configuration
- Самый простой способ с интерактивным пользовательским интерфейсом
- Легко отслеживаемое состояние задания.
Windows PowerShell
- Вызов из Windows PowerShell на локальной рабочей станции или в службе сборки
- Интеграция с конвейером тестирования разработки
- Предоставление значений сложных параметров
- Работа с данными узла и с данными, отличными от данных узла, в большом масштабе
- Значительное повышение производительности
Вы также можете использовать шаблоны Azure Resource Manager с расширением DSC Azure для принудительной отправки конфигураций на виртуальные машины Azure. Расширение DSC Azure использует платформу агента Azure, чтобы доставлять и применять конфигурации DSC виртуальных машин Azure, а также сообщать об этих конфигурациях. Сведения о компиляции с помощью шаблонов Azure Resource Manager см. в разделе Расширение Desired State Configuration (DSC) с использованием шаблонов Azure Resource Manager.
Компиляция конфигурации DSC в Azure State Configuration
Портал
- В учетной записи службы автоматизации выберите конфигурацию состояния (DSC).
- Выберите на вкладке "Конфигурации" , а затем выберите имя конфигурации для компиляции.
- Выберите Компилировать.
- Если нет параметров конфигурации, нужно подтвердить ее компиляцию. Если конфигурация имеет параметры, откроется панель конфигурации компиляции, чтобы предоставить значения параметров.
- Откроется страница "Задание компиляции", на которой можно будет отследить состояние задания компиляции. Эту страницу также можно использовать для отслеживания конфигураций узлов (документы конфигурации MOF), размещенных на опрашиваемом сервере службы настройки состояния службы автоматизации Azure.
Azure PowerShell
Чтобы начать компиляцию с помощью Windows PowerShell, можно использовать Start-AzAutomationDscCompilationJob. В следующем примере кода начинается компилирование конфигурации DSC под именем SampleConfig.
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 выполняется так же, как и в модулях Runbook службы автоматизации Azure. Дополнительные сведения о параметрах Runbook см. в статье "Запуск модуля Runbook в служба автоматизации Azure".
Чтобы определить значения свойств в конфигурации узла ParametersExample.sample, созданной во время компилирования, в следующем примере используются параметры FeatureName
и IsPresent
.
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
}
}
}
Вы можете компилировать конфигурации DSC, которые используют базовые параметры, на портале службы настройки состояния службы автоматизации Azure или с помощью Azure PowerShell.
Портал
Чтобы ввести значения параметров на портале, нажмите кнопку Компилировать.
Azure PowerShell
Для модуля PowerShell нужны параметры в таблице hashtable, в которой раздел соответствует имени параметра, а значение — значению параметра.
$Parameters = @{
'FeatureName' = 'Web-Server'
'IsPresent' = $False
}
Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters
Сведения о передаче объектов PSCredential
в качестве параметров см. в разделе Активы учетных данных.
Компиляция конфигураций, содержащих составные ресурсы, в службе автоматизации Azure
Функция Составные ресурсы позволяют использовать конфигурации DSC в качестве вложенных ресурсов в рамках конфигурации. Эта функция обеспечивает применение нескольких конфигураций к одному ресурсу. См. составные ресурсы: использование конфигурации DSC в качестве ресурса для получения дополнительных сведений о составных ресурсах.
Примечание.
Для правильной компиляции конфигураций, содержащих составные ресурсы, необходимо сначала импортировать в службу автоматизации Azure все ресурсы DSC, от которых зависят такие составные ресурсы. Добавление составного ресурса DSC не отличается от добавления модуля PowerShell в службу автоматизации Azure. Этот процесс описан в статье Администрирование модулей в службе автоматизации Azure.
Управление ConfigurationData при компиляции конфигураций в службе автоматизации Azure
Встроенный параметр DSC ConfigurationData
позволяет при использовании PowerShell DSC отделить конфигурацию структуры от любой конфигурации среды. Дополнительные сведения о см. в публикации блога Разница между "что" и "где" в DSC PowerShell.
Примечание.
При компилировании в службе настройки состояния службы автоматизации Azure можно использовать ConfigurationData
в Azure PowerShell, однако не следует использовать этот параметр на портале Azure.
В следующем примере конфигурации DSC используется ConfigurationData
посредством ключевых слов $ConfigurationData
и $AllNodes
. Для этого примера также нужен модуль 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. Следующий скрипт добавляет две конфигурации узлов в службу извлечения состояния служба автоматизации Azure: ConfigurationDataSample.MyVM1 и 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 во время компиляции
Ссылки на ресурсы одинаковы в конфигурациях и модулях Runbook службы настройки состояния службы автоматизации Azure. Дополнительные сведения см. в следующих статьях:
Активы учетных данных
Если в конфигурации есть параметр, указывающий PSCredential
объект, используйте Get-AutomationPSCredential
путем передачи имени ресурса учетных данных служба автоматизации Azure командлету для получения учетных данных. служба автоматизации Azure передает учетные данные в конфигурацию.
Чтобы обеспечить безопасность учетных данных в конфигурациях узлов, зашифруйте учетные данные в MOF-файле конфигурации узла. Необходимо предоставить PowerShell DSC разрешение на вывод учетных данных в виде обычного текста во время создания MOF конфигурации узла. PowerShell DSC не знает, что служба автоматизации Azure шифрует весь MOF-файл после создания задания компиляции.
Вы можете сообщить PowerShell DSC, что учетные данные будут выводиться в виде обычного текста в MOFS созданной конфигурации узла с помощью данных конфигурации. PSDscAllowPlainTextPassword = $true
следует передать через ConfigurationData
для каждого имени блока узла, которое отображается в конфигурации DSC и для которого нужны учетные данные.
В следующем примере показана конфигурация 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
}
}
}
Вы можете компилировать конфигурацию DSC, показанную выше, с помощью PowerShell. Следующий код PowerShell добавляет две конфигурации узлов на сервер извлечения конфигурации состояния служба автоматизации Azure: CredentialSample.MyVM1 и 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.
Это сообщение можно безопасно игнорировать.
Компилирование конфигурации DSC с помощью Windows PowerShell
Процесс компиляции конфигураций DSC в Windows PowerShell включен в документацию по DSC PowerShell Запись, компиляция и применение конфигурации. Этот процесс можно выполнить на рабочей станции разработчика или в службе сборки, например в Azure DevOps. Затем можно импортировать MOF-файлы, созданные путем компиляции конфигурации, в службу настройки состояния Azure.
Компиляция в Windows PowerShell также предоставляет возможность подписывать содержимое конфигурации. Агент DSC проверяет конфигурацию подписанного узла локально на управляемом узле. Проверка гарантирует, что конфигурация, примененная к узлу, получена из полномочного источника.
Вы также можете импортировать конфигурации узлов, скомпилированные за пределами Azure. Импорт включает компиляцию на рабочей станции разработчика или в службе, например в Azure DevOps. Такой подход имеет несколько преимуществ, включая производительность и надежность.
Примечание.
Размер файла конфигурации узла не должен превышать 1 МБ, чтобы его можно было импортировать в службу автоматизации Azure.
Дополнительные сведения о том, как подписывать конфигурации узла, см. в разделе Улучшения в WMF 5.1: подпись конфигурации и модуля.
Импорт конфигурации узла на портале Azure
В учетной записи службы автоматизации выберите конфигурацию состояния (DSC) в разделе "Управление конфигурацией".
На странице "Конфигурация состояния" (DSC) выберите на вкладке "Конфигурации " и нажмите кнопку "Добавить".
На странице "Импорт" щелкните значок папки рядом с полем "Файл конфигурации узла", чтобы найти MOF-файл конфигурации узла на локальном компьютере.
В текстовом поле Имя конфигурации введите имя. Это имя должно совпадать с именем конфигурации, из которой была скомпилирована данная конфигурация узла.
Нажмите ОК.
Импорт конфигурации узла с помощью Azure PowerShell
Для импорта конфигурации узла в учетную запись службы автоматизации можно использовать командлет Import-AzAutomationDscNodeConfiguration.
$importAzAutomationDscNodeConfigurationSplat = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
ConfigurationName = 'MyNodeConfiguration'
Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat
Следующие шаги
- Чтобы приступить к работе со службой State Configuration службы автоматизации Azure, см. сведения в этой статье.
- Сведения о компилировании конфигураций DSC, которые затем можно назначить целевым узлам, см. в статье Компилирование конфигураций DSC в службе State Configuration службы автоматизации Azure.
- Справочник по командлетам PowerShell см. в документации по Az.Automation.
- Сведения о ценах см. на странице с расценками для службы настройки состояния службы автоматизации Azure.
- Пример использования конфигурации состояния в конвейере непрерывного развертывания см. в разделе "Настройка непрерывного развертывания с помощью Шоколада".