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

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

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

Важно!

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

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

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

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

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

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

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

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

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

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

Важно!

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

Пример приведен в документе по началу работы с DSC для Windows.

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

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

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

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

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

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

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

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

# Create a package that will only audit compliance
New-GuestConfigurationPackage `
  -Name 'MyConfig' `
  -Configuration './Config/MyConfig.mof' `
  -Type Audit `
  -Force
# Create a package that will audit and apply the configuration (Set)
New-GuestConfigurationPackage `
  -Name 'MyConfig' `
  -Configuration './Config/MyConfig.mof' `
  -Type AuditAndSet `
  -Force

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

Name      Path
----      ----
MyConfig  /Users/.../MyConfig/MyConfig.zip

Ожидаемое содержимое артефакта гостевой конфигурации

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

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

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

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

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

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

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

Примечание

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

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

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