Создание настраиваемых артефактов пакета конфигурации машины
Перед началом работы рекомендуется ознакомиться со страницей обзора конфигурации машины.
Конфигурация компьютера использует требуемую конфигурацию состояния (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
. - FrequencyMinutes: частота вычисления пакета на компьютере в минутах.
- FilesToInclude: список путей массива к дополнительным файлам для включения в созданный пакет.
Этот шаг не требует повышения прав. Параметр 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
, чтобы включить содержимое платформы стороннего разработчика в артефакт содержимого.