Создание настраиваемых артефактов пакета конфигурации машины

Примечание

Гостевая конфигурация Политики Azure теперь называется конфигурацией машины в Автоматическом управлении Azure. Дополнительные сведения о недавнем переименовании служб управления конфигурацией Microsoft.

Перед началом работы рекомендуется ознакомиться со страницей обзора конфигурации машины.

Конфигурация компьютера использует Desired State Configuration (DSC) при аудите и настройке Windows и Linux. Эта конфигурация DSC определяет состояние, в котором должен находиться компьютер.

Важно!

Пользовательские пакеты, которые проверяют состояние среды и применяют конфигурации, находятся в состоянии поддержки общедоступной версии. Однако применяются следующие ограничения:

Для использования пакетов конфигураций машины, которые применяются в конфигурациях, требуется расширение гостевой конфигурации виртуальной машины Azure версии 1.29.24 или более поздней либо агент Arc 1.10.0 или более поздней версии.

Модуль GuestConfiguration доступен только в Ubuntu 18. Однако пакет и политики, созданные модулем, можно использовать в любом дистрибутиве Linux и любой версии, поддерживаемой в Azure или Arc.

Тестирование пакетов в macOS недоступно.

Не используйте секреты или конфиденциальные сведения в пакетах с нестандартным содержимым.

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

Установка PowerShell 7 и необходимых модулей PowerShell

Сначала выполните действия, описанные в разделе Настройка среды разработки конфигурации компьютера. Эти действия помогут установить необходимую версию PowerShell для вашей ОС, модуль GuestConfiguration и модуль PSDesiredStateConfiguration .

Создание конфигурации

Перед созданием пакета конфигурации создайте и скомпилируйте конфигурацию DSC. Примеры конфигураций доступны для Windows и Linux.

Важно!

При компиляции конфигураций для Windows используйте PSDesiredStateConfiguration версии 2.0.7 (стабильный выпуск). При компиляции конфигураций для Linux установите предварительную версию 3.0.0.

Этот пример конфигурации предназначен для компьютеров Windows. Он настраивает компьютер для создания переменной MC_ENV_EXAMPLE среды в Process областях и Machine . Значение переменной задает значение 'This was set by machine configuration'.

Configuration MyConfig {
    Import-DscResource -Name 'Environment' -ModuleName 'PSDscResources'
    Environment MachineConfigurationExample {
        Name   = 'MC_ENV_EXAMPLE'
        Value  = 'This was set by machine configuration'
        Ensure = 'Present'
        Target = @('Process', 'Machine')
    }
}

MyConfig

Сохранив это определение в файле скрипта MyConfig.ps1 , можно запустить скрипт для компиляции конфигурации.

. .\MyConfig.ps1
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:39 AM           1080 localhost.mof

Конфигурация компилируется в localhost.mof файл в папке MyConfig в текущем рабочем каталоге. Переименуйте localhost.mof на имя, которое вы хотите использовать в качестве имени пакета, например MyConfig.mof.

Rename-Item -Path .\MyConfig\localhost.mof -NewName MyConfig.mof -PassThru
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:40 AM           1080 MyConfig.mof

Примечание

В этом примере показано, как создать и скомпилировать конфигурацию для компьютера Windows. Для Linux необходимо создать пользовательский модуль ресурсов DSC с помощью классов PowerShell. В статье Написание настраиваемого ресурса DSC с помощью классов PowerShell приведен полный пример пользовательского ресурса и конфигурации, протестированных с помощью конфигурации компьютера.

Остальная часть этой статьи относится к конфигурациям, определенным для компьютеров Linux и Windows, за исключением случаев, когда в ней упоминаются аспекты, связанные с платформой.

Создание артефакта пакета конфигураций

После компиляции MOF-файла нужно упаковать вместе все вспомогательные файлы. Готовый пакет используется конфигурацией компьютера для создания определений в службе "Политика Azure".

Командлет New-GuestConfigurationPackage создает пакет. Модули, необходимые для конфигурации, должны быть доступны в $Env:PSModulePath для среды разработки, чтобы команды в модуле могли добавлять их в пакет.

Командлету New-GuestConfigurationPackage при создании содержимого Windows передаются следующие параметры:

  • Name. Имя пакета конфигурации компьютера.
  • Конфигурация. Полный путь к скомпилированному документу конфигурации DSC.
  • Путь. Путь к выходной папке. Это необязательный параметр. Если этот параметр не указан, пакет создается в текущем каталоге.
  • Тип: (Audit, ) Определяет, AuditandSetследует ли выполнять только аудит конфигурации или изменять состояние компьютера, если оно выходит за пределы требуемого состояния. Значение по умолчанию — Audit.

Этот шаг не требует повышения прав. Параметр Force используется для перезаписи существующих пакетов, если команда выполняется несколько раз.

Следующие команды создают артефакт пакета:

# Create a package that will only audit compliance
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'Audit'
    Force         = $true
}
New-GuestConfigurationPackage @params
# Create a package that will audit and apply the configuration (Set)
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'AuditAndSet'
    Force         = $true
}
New-GuestConfigurationPackage @params

Возвращается объект с именем и путем к созданному пакету.

Name     Path
----     ----
MyConfig C:\dsc\MyConfig.zip

Ожидаемое содержимое артефакта конфигурации компьютера

Готовый пакет используется конфигурацией компьютера для создания определений в службе "Политика Azure". В этот пакет входит следующее:

  • Скомпилированная конфигурация DSC в MOF-файле.
  • Папка для модулей
    • Модуль GuestConfiguration
    • Модуль DscNativeResources
    • Модули ресурса DSC, которые требуются для MOF-файла
  • Файл метаконфигурации, в котором хранится пакет type и version.

Командлет PowerShell создает файл пакета .zip . Папка корневого уровня или папка версии не требуются. Формат пакета должен быть файлом .zip и не может превышать общий размер 100 МБ при несжатом виде.

Вы можете развернуть архив, чтобы проверить его, с помощью командлета Expand-Archive .

Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip

Общий размер несжатого пакета можно получить с помощью PowerShell.

Get-ChildItem -Recurse -Path .\MyConfigZip |
    Measure-Object -Sum Length |
    ForEach-Object -Process {
        $Size = [math]::Round(($_.Sum / 1MB), 2)
        "$Size MB"
    }

Расширение конфигурации компьютера с помощью средств сторонних разработчиков

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

  • Ресурс Desired State Configuration, который обрабатывает все действия, связанные с управлением сторонним средством.
    • Установка
    • Invoke
    • Преобразование вывода
  • Содержимое в правильном формате, который понимает это средство.

Ресурс DSC нужно создать самостоятельно, если сообщество еще не предложило готовое решение. Решения сообщества можно просмотреть, выполнив поиск в коллекции PowerShell по тегу GuestConfiguration.

Примечание

Расширяемость конфигурации компьютера поддерживается в режиме "использование собственной лицензии". Перед ее использованием убедитесь, что вы соблюдаете все условия, применимые к средствам сторонних разработчиков.

После установки ресурса DSC в среде разработки примените параметр FilesToInclude для командлета New-GuestConfigurationPackage, чтобы включить содержимое платформы стороннего разработчика в артефакт содержимого.

Дальнейшие действия