Бөлісу құралы:


Планирование перевода службы автоматизации Azure с конфигурации состояния на конфигурацию машины

Конфигурация машины — это последняя реализация функций, предоставляемая конфигурацией состояния службы автоматизации Azure (также известной как Desired State Configuration службы автоматизации Azure, или AADSC). По возможности следует запланировать перемещение содержимого и компьютеров в новую службу. В этой статье приводятся рекомендации по разработке стратегии миграции из службы автоматизации Azure в конфигурацию машины.

Новые функции в запросах клиентов на адрес конфигурации компьютера:

  • Увеличение размера конфигураций до 100 МБ
  • Расширенные отчеты с помощью Azure Resource Graph, в том числе идентификатор и состояние ресурса
  • Управление несколькими конфигурациями для одного компьютера
  • Когда компьютеры отменяют нужное состояние, вы можете управлять тем, в какой момент это должно быть исправлено
  • Linux и Windows используют ресурсы DSC на основе PowerShell.

Сначала рекомендуем ознакомиться с общими сведениями, представленными на странице Понимание функции конфигурации машины Политики Azure.

Принципы миграции

Лучшим подходом к миграции является повторное развертывание содержимого с последующей миграцией компьютеров. В этом разделе описаны ожидаемые шаги по миграции.

  1. Экспорт конфигураций из службы автоматизации Azure
  2. Выявление требований к модулю и их загрузка в вашу среду
  3. Компиляция конфигураций
  4. Создание и публикация пакетов конфигурации компьютера.
  5. Тестирование пакетов конфигурации компьютера
  6. Подключение гибридных компьютеров к службе Azure Arc
  7. Отмена регистрации серверов в State Configuration службы автоматизации Azure
  8. Назначение конфигураций серверам с помощью конфигурации машины.

Конфигурация компьютера использует DSC версии 3 с 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, можно передать выходные данные непосредственно 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'

Для настройки требуется модуль xWeb Администратор istration версии 1.19.0.0 и модуль PSDesiredStateConfiguration.

Тестирование содержимого в конфигурации машины Azure

Чтобы оценить, можно ли использовать содержимое из служба автоматизации Azure State Configuration с конфигурацией компьютера, выполните пошаговые инструкции на странице "Создание артефактов пакета конфигурации настраиваемого компьютера".

При достижении этапа Создание конфигурации скрипт конфигурации, создающий 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 в конфигурации машины разработайте план миграции компьютеров.

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данными имен файлов.

В качестве обходного решения модуль был опубликован в коллекции PowerShell с именем AADSCConfigContent. Модуль содержит только одну команду, которая экспортирует содержимое конфигурации, хранящейся в службе автоматизации Azure, путем выполнения запроса на обслуживание.

Следующие шаги

  • Разработка пакета конфигурации настраиваемого компьютера.
  • Используйте модуль GuestConfiguration для создания определения Политика Azure для горизонтального управления средой.
  • [Назначение определения пользовательской политики] [20] с помощью портал Azure.
  • Узнайте, как просмотреть [сведения о соответствии для конфигурации компьютера][21] назначения политик.