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

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

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

Важно!

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

Чтобы использовать пакеты конфигурации компьютера, которые применяют конфигурации, требуется расширение гостевой конфигурации виртуальной машины Azure версии 1.26.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"
    }

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

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

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

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

Примечание.

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

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

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