Планирование перевода службы автоматизации Azure с конфигурации состояния на конфигурацию машины
Примечание.
служба автоматизации Azure конфигурация состояния будет прекращена 30 сентября 2027 г.Конфигурация компьютера Azure по этой дате. Дополнительные сведения см. в публикации блога. Служба конфигурации компьютера Azure объединяет функции расширения DSC, служба автоматизации Azure конфигурации состояния и наиболее часто запрашиваемые функции из отзывов клиентов. Конфигурация компьютера Azure также включает поддержку гибридных компьютеров с помощью серверов с поддержкой Arc.
Конфигурация компьютера — это последняя реализация функциональных возможностей, предоставляемых конфигурацией состояния служба автоматизации Azure (также называемой служба автоматизации Azure требуемой конфигурацией состояния или AADSC). По возможности следует запланировать перемещение содержимого и компьютеров в новую службу. В этой статье приводятся рекомендации по разработке стратегии миграции из службы автоматизации Azure в конфигурацию машины.
Новые функции в запросах клиентов на адрес конфигурации компьютера:
- Увеличение размера конфигураций до 100 МБ
- Расширенные отчеты с помощью Azure Resource Graph, в том числе идентификатор и состояние ресурса
- Возможность управления несколькими конфигурациями для одного компьютера
- Возможность управления при возникновении исправления при перемещении компьютеров из требуемого состояния
- Ресурсы DSC на основе PowerShell для Linux и Windows
Сначала рекомендуем ознакомиться с общими сведениями, представленными на странице Понимание функции конфигурации машины Политики Azure.
Принципы миграции
Лучшим подходом к миграции является повторное развертывание содержимого с последующей миграцией компьютеров. В этом разделе описаны ожидаемые шаги по миграции.
- Экспорт конфигураций из службы автоматизации Azure
- Выявление требований к модулю и их загрузка в вашу среду
- Компиляция конфигураций
- Создание и публикация пакетов конфигурации компьютера.
- Тестирование пакетов конфигурации компьютера
- Подключение гибридных компьютеров к службе Azure Arc
- Отмена регистрации серверов в State Configuration службы автоматизации Azure
- Назначение конфигураций серверам с помощью конфигурации машины.
Конфигурация компьютера использует DSC версии 2 с PowerShell версии 7. DSC версии 3 в гостевой конфигурации может работать вместе со старыми версиями, установленными в Windows и Linux. Эти реализации являются отдельными. Однако обнаружение конфликтов в этом случае невозможно.
Конфигурации машины не требуются модули публикации, конфигурации в службе или компиляция в службе. Вместо этого вы разрабатываете и тестируете содержимое с помощью специально созданных инструментов и публикуете содержимое в любом месте, где компьютер может получить доступ по протоколу HTTPS (обычно Хранилище BLOB-объектов Azure).
Если вы решили иметь компьютеры в обеих службах в течение определенного периода времени, нет технических барьеров. Два параметра являются независимыми.
Экспорт содержимого из службы автоматизации Azure
Начните с обнаружения и экспорта содержимого из служба автоматизации Azure state Configuration в среду разработки, в которой вы создаете, тестируете и публикуете пакеты содержимого для конфигурации компьютера.
Конфигурации
Скрипты конфигурации можно экспортировать только из служба автоматизации Azure. Невозможно экспортировать конфигурации узлов или скомпилированные MOF-файлы. Если вы опубликовали MOF-файлы непосредственно в учетной записи службы автоматизации и больше не имеете доступа к исходному файлу, необходимо выполнить повторную компиляцию из скриптов частной конфигурации. Если вы не можете найти исходную конфигурацию, необходимо повторно выполнить его проверку подлинности.
Чтобы экспортировать скрипты конфигурации из служба автоматизации Azure, сначала определите учетную запись служба автоматизации Azure с конфигурациями и именем группы ресурсов, в которую развертывается учетная запись службы автоматизации.
Установите модуль PowerShell Az.Automation.
Install-Module -Name Az.Automation
Затем используйте Get-AzAutomationAccount
команду, чтобы определить учетные записи службы автоматизации и группу ресурсов, в которой они развернуты. Свойства ResourceGroupName и AutomationAccountName важны для следующих действий.
Get-AzAutomationAccount
SubscriptionId : <your-subscription-id>
ResourceGroupName : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location : centralus
State :
Plan :
CreationTime : 6/30/2021 11:56:17 AM -05:00
LastModifiedTime : 6/30/2021 11:56:17 AM -05:00
LastModifiedBy :
Tags : {}
Обнаружение конфигураций в учетной записи службы автоматизации. Выходные данные имеют одну запись для каждой конфигурации. Если их у вас много, храните информацию как переменную, чтобы упростить работу с ними.
$getParams = @{
ResourceGroupName = '<your-resource-group-name>'
AutomationAccountName = '<your-automation-account-name>'
}
Get-AzAutomationDscConfiguration @getParams
ResourceGroupName : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location : centralus
State : Published
Name : <your-configuration-name>
Tags : {}
CreationTime : 6/30/2021 12:18:26 PM -05:00
LastModifiedTime : 6/30/2021 12:18:26 PM -05:00
Description :
Parameters : {}
LogVerbose : False
Наконец, экспортируйте каждую конфигурацию в локальный файл скрипта с помощью команды Export-AzAutomationDscConfiguration
. В результирующем имени файла используется шаблон \ConfigurationName.ps1
.
$exportParams = @{
OutputFolder = '<location-on-your-machine>'
ResourceGroupName = '<your-resource-group-name>'
AutomationAccountName = '<your-automation-account-name>'
Name = '<your-configuration-name>'
}
Export-AzAutomationDscConfiguration @exportParams
UnixMode User Group LastWriteTime Size Name
-------- ---- ----- ------------- ---- ----
12/31/1600 18:09
Экспорт конфигураций с помощью конвейера PowerShell
Вы можете экспортировать все конфигурации в локальную папку на компьютере. Чтобы автоматизировать этот процесс, передайте выходные данные каждой команды в предыдущих примерах в следующую команду.
В следующем примере экспортируются пять конфигураций. Шаблон выходных данных является единственным показателем успешности.
Get-AzAutomationAccount |
Get-AzAutomationDscConfiguration |
Export-AzAutomationDSCConfiguration -OutputFolder <location on your machine>
UnixMode User Group LastWriteTime Size Name
-------- ---- ----- ------------- ---- ----
12/31/1600 18:09
12/31/1600 18:09
12/31/1600 18:09
12/31/1600 18:09
12/31/1600 18:09
Рекомендуем выполнить декомпозицию сложных файлов конфигурации
Конфигурация компьютера может управлять несколькими конфигурациями на один компьютер. Многие конфигурации, написанные для State Configuration службы автоматизации Azure, предполагают ограничение на управление одной конфигурацией на каждом компьютере. Чтобы воспользоваться расширенными возможностями, предлагаемыми конфигурацией компьютера, можно разделить большие файлы конфигурации на множество небольших конфигураций, где каждый обрабатывает конкретный сценарий.
В конфигурации компьютера нет оркестрации для управления порядком сортировки конфигураций. Шаги в конфигурации следует выполнять вместе в одном пакете, если они должны выполняться последовательно.
Модули
Невозможно экспортировать модули из служба автоматизации Azure или автоматически сопоставлять конфигурации, для которых требуются модули и версии. Для создания нового пакета конфигурации машины необходимо наличие модулей в локальной среде. Чтобы создать список модулей, необходимых для миграции, используйте PowerShell, чтобы запрашивать имя и версию модулей в службе автоматизации Azure.
Если вы используете модули, которые являются пользовательскими и существуют только в частной среде разработки, их невозможно экспортировать из служба автоматизации Azure.
Если в учетной записи отсутствует модуль, необходимый для настройки и в учетной записи, вы не сможете скомпилировать конфигурацию. Таким образом, невозможно перенести конфигурацию.
Вывод списка модулей, импортированных в службу автоматизации Azure
Чтобы получить список всех модулей, установленных в учетной записи службы автоматизации, используйте Get-AzAutomationModule
команду. Свойство IsGlobal сообщает, что модуль встроен в служба автоматизации Azure всегда или если он был опубликован в учетной записи.
Например, чтобы создать список всех модулей, опубликованных в любой из ваших учетных записей.
Get-AzAutomationAccount |
Get-AzAutomationModule |
Where-Object IsGlobal -eq $false
Кроме того, коллекцию PowerShell можно использовать в качестве вспомогательного средства поиска сведений о доступных для общего пользования модулях. В следующем примере перечислены модули, встроенные в новые учетные записи службы автоматизации и содержащие ресурсы DSC.
Get-AzAutomationAccount |
Get-AzAutomationModule |
Where-Object IsGlobal -eq $true |
Find-Module -ErrorAction SilentlyContinue |
Where-Object {'' -ne $_.Includes.DscResource} |
Select-Object -Property Name, Version -Unique |
Format-Table -AutoSize
Name Version
---- -------
AuditPolicyDsc 1.4.0
ComputerManagementDsc 8.4.0
PSDscResources 2.12.0
SecurityPolicyDsc 2.10.0
xDSCDomainjoin 1.2.23
xPowerShellExecutionPolicy 3.1.0.0
xRemoteDesktopAdmin 1.1.0.0
Скачивание модулей из коллекция PowerShell или репозитория PowerShellGet
Если модули были импортированы из коллекция PowerShell, можно передать выходные данные непосредственно Install-Module
в Find-Module
. Передача выходных данных между командами предоставляет решение для загрузки среды разработчика со всеми модулями в учетной записи службы автоматизации, если они доступны в коллекция PowerShell.
Вы можете использовать тот же подход для извлечения модулей из пользовательского веб-канала NuGet. Необходимо зарегистрировать веб-канал в локальной среде в качестве репозитория PowerShellGet.
Команда Find-Module
в этом примере не подавляет ошибки, то есть модули, не найденные в коллекции, возвращают сообщение об ошибке.
Get-AzAutomationAccount |
Get-AzAutomationModule |
Where-Object IsGlobal -eq $false |
Find-Module |
Where-Object { '' -ne $_.Includes.DscResource } |
Install-Module
Поиск требований к модулям в скриптах конфигурации
После экспорта скриптов конфигурации из служба автоматизации Azure можно просмотреть содержимое для получения сведений о том, какие модули необходимы для компиляции каждой конфигурации в MOF-файл. Этот подход необходим только в том случае, если вы найдете конфигурации в учетных записях службы автоматизации, которые отсутствуют в модулях. Конфигурации больше не будут использоваться для компьютеров, но они по-прежнему могут находиться в учетной записи.
В верхней части каждого файла найдите строку, включающую в себя Import-DscResource
. Эта команда применима только в конфигурации, и она используется для загрузки модулей во время компиляции.
Например, WindowsIISServerConfig
конфигурация в коллекция PowerShell содержит строки в этом примере.
configuration WindowsIISServerConfig
{
Import-DscResource -ModuleName @{ModuleName = 'xWebAdministration';ModuleVersion = '1.19.0.0'}
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
Для настройки требуется модуль xWebAdministration версии 1.19.0.0 и модуль PSDesiredStateConfiguration.
Тестирование содержимого в конфигурации машины Azure
Чтобы оценить, можно ли использовать содержимое из конфигурации состояния служба автоматизации Azure для конфигурации компьютера, выполните пошаговые инструкции по созданию артефактов пакета конфигурации настраиваемого компьютера.
При достижении этапа Создание конфигурации скрипт конфигурации, создающий MOF-файл, должен быть одним из скриптов, экспортированных из State Configuration службы автоматизации Azure. Требуется установить необходимые модули PowerShell в среде, прежде чем можно будет скомпилировать конфигурацию в MOF-файл и создать пакет конфигурации машины.
Что делать, если модуль не работает с конфигурацией компьютера?
Некоторые модули могут иметь проблемы совместимости с конфигурацией компьютера. Наиболее распространенные проблемы связаны с .NET Framework и .NET Core. Подробные технические сведения доступны на странице, различия между Windows PowerShell 5.1 и PowerShell 7.x.
Чтобы устранить проблемы совместимости, можно выполнять команды в Windows PowerShell из модуля, импортированного в PowerShell 7, выполнив команду powershell.exe
. Пример модуля, использующего этот метод, можно просмотреть в репозитории политик Azure, где он используется для аудита состояния конфигурации Windows DSC.
Пример также иллюстрирует некоторое подтверждение концепции.
# example function that could be loaded from module
function New-TaskResolvedInPWSH7 {
# runs the fictitious command 'Get-myNotCompatibleCommand' in Windows PowerShell
$compatObject = & powershell.exe -NoProfile -NonInteractive -Command {
Get-myNotCompatibleCommand
}
# resulting object can be used in PowerShell 7
return $compatObject
}
Нужно ли добавить свойство Reasons в Get-TargetResource во всех модулях, которые я переносю?
Реализация свойства "Причины" обеспечивает лучший интерфейс при просмотре результатов назначения конфигурации из портал Azure. Get
Если метод в модуле не содержит причин, универсальные выходные данные возвращаются со сведениями из свойств, возвращаемых методомGet
. Таким образом, для миграции это необязательно.
Компьютеры
State Configuration службы автоматизации Azure доступна как для виртуальных машин в Azure, так и для гибридных компьютеров, расположенных за пределами Azure. Необходимо спланировать каждый из этих сценариев, используя разные этапы.
Виртуальные машины Azure
Виртуальные машины Azure уже имеют ресурс в Azure. Это означает, что они готовы к назначениям конфигурации машины, которые связывают их с конфигурацией. Высокоуровневые задачи по переносу виртуальных машин Azure — это удаление их из State Configuration службы автоматизации Azure, а затем назначение конфигураций с помощью конфигурации машины.
Чтобы удалить компьютер из State Configuration службы автоматизации Azure, выполните действия, описанные на странице Как удалить конфигурацию и узел из State Configuration службы автоматизации Azure.
Чтобы назначить конфигурации с помощью конфигурации компьютера, выполните действия, описанные в кратких руководствах Политика Azure, таких как краткое руководство. Создание назначения политики для определения несоответствующих ресурсов. На шаге 6 при выборе определения политики выберите определение, которое применяет конфигурацию, перенесенную из State Configuration службы автоматизации Azure.
Гибридные компьютеры
Компьютеры за пределами Azure можно зарегистрировать в State Configuration службы автоматизации Azure, но у них нет ресурсов компьютера в Azure. Локальная служба Configuration Manager (LCM) на компьютере обрабатывает подключение к служба автоматизации Azure. Запись узла управляется как ресурс в типе поставщика служба автоматизации Azure.
Перед удалением компьютера из State Configuration службы автоматизации Azure подключите каждый узел как сервер с поддержкой Azure Arc. Подключение к Azure Arc создает ресурс компьютера в Azure, чтобы Политика Azure управлять компьютером. Компьютер можно подключить к Azure Arc в любое время, но для автоматизации процесса можно использовать конфигурацию состояния служба автоматизации Azure.
Устранение неполадок при экспорте содержимого
Сведения об известных проблемах приведены в этом разделе.
Экспорт конфигураций приводит к символу \" в имени файла
При использовании PowerShell в macOS и Linux могут возникнуть проблемы с выходными Export-AzAutomationDSCConfiguration
данными имен файлов.
В качестве обходного решения установите модуль AADSCConfigContent из коллекция PowerShell. Модуль имеет одну команду, которая экспортирует содержимое конфигурации, хранящейся в служба автоматизации Azure, выполнив запрос REST к службе.
Следующие шаги
- Разработка пакета конфигурации настраиваемого компьютера.
- Используйте модуль GuestConfiguration для создания определения Политика Azure для горизонтального управления средой.
- Назначьте пользовательское определение политики с помощью портала Azure.
- Узнайте, как просматривать сведения о соответствии для назначений политики конфигурации машины.