Главная ГайдыАвтоматизация развертывания программного обеспечения и настроек с помощью WinGet Configure (DSC)

Автоматизация развертывания программного обеспечения и настроек с помощью WinGet Configure (DSC)

by admin
A+A-
Сброс

Конфигурация Windows с помощью WinGet и PowerShell DSC на основе декларативных YAML-файлов

Помимо установки пакетов приложений из репозитория, менеджер пакетов WinGet позволяет использовать декларативную конфигурацию среды Windows. Суть заключается в том, что администратор создаёт декларативный YAML-файл, в котором описывается требуемое состояние компьютера, включая настройки Windows и необходимое программное обеспечение. Затем WinGet с помощью PowerShell Desired State Configuration (DSC) автоматически приводит Windows в состояние, заданное в YAML-файле.

WinGet поддерживает управление конфигурацией компьютера через DSC, начиная с версии 1.6.2631 (выпуск 2023 года).

Команда winget configure использует PowerShell Desired State Configuration (DSC) 3.0, включая новую архитектуру Microsoft DSC 3, для автоматической настройки Windows в соответствии с состоянием, описанным в файле конфигурации. YAML-файл декларативно описывает требуемое системное состояние: установку или удаление программ с указанием версий, добавление или удаление функций и ролей Windows, а также необходимые настройки Windows и приложений. Применение такого YAML-файла позволит автоматизировать развертывание окружения на рабочей станции или сервере под управлением Windows.

Пример YAML-конфигурации для WinGet

Рассмотрим простой пример YAML-файла, который я использовал для установки нескольких приложений (Firefox, Notepad++ и PowerToys) и удаления 7-Zip, если он установлен. Кроме того, файл вносит изменения в реестр — включает резервное копирование реестра Windows с помощью опции EnablePeriodicBackup.

Приложения из Microsoft Store можно устанавливать и удалять по их App ID. Например, чтобы узнать App ID PowerToys, выполните команду:

winget show powertoys -s msstore

winget find app id/name

Команды для поиска имён пакетов приложений в Winget:

  • winget search appname — найти пакет по имени
  • winget list — показать список установленных приложений

Пример такого YAML-файла размещён в нашем репозитории на GitHub:
https://github.com/maxbakhub/winposh/blob/main/DSC/winget_configure_dsc_sample_win11.yaml

Winget Configure DSC sample YAML file

Применение конфигурации YAML с помощью Winget

Сначала включите поддержку DSC в WinGet:

winget configure --enable

winget configure enable DSC

Рекомендуется перед применением проверить корректность синтаксиса YAML-файла:

winget configure validate winget_configure_dsc_sample_win11.yaml
Как и в Python, YAML-файлы используют отступы для определения структуры и вложенности. Для этого применяются пробелы, а не табуляция.

Теперь применим конфигурацию из YAML-файла к компьютеру:

winget configure --file winget_configure_dsc_sample_win11.yaml --accept-configuration-agreements

Winget Configure Desired State Configuration log

WinGet прочитает настройки из YAML, установит или удалит описанные приложения и применит заданные настройки Windows (за это отвечает процесс ConfigurationRemotingServer.exe, который парсит YAML и конфигурирует систему). Таким образом, одной командой вы получите полностью настроенную среду Windows. На экране появится подробный лог выполнения конфигурации DSC.

Dry Run — проверка соответствия текущей конфигурации

Чтобы посмотреть, насколько текущая конфигурация компьютера соответствует YAML-файлу, выполните команду сухого прогона:

winget configure test -f winget_configure_dsc_sample_win11.yaml --accept-configuration-agreements

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

System is not in the described configuration state.

WinGet: System is not in the described configuration state.

При повторном применении YAML-конфигурации Winget Configure внесёт только те изменения, которые отличаются от желаемого состояния.

Директива securityContext: elevated означает, что для применения некоторых системных настроек будет запрошено однократное подтверждение повышения прав (UAC).

Использование YAML-файла из внешнего источника

WinGet позволяет указывать YAML-конфигурацию, расположенную на внешнем веб-ресурсе. Это удобно для автоматизации развертывания конфигураций из GitHub, GitLab и других сервисов.

winget configure --accept-configuration-agreements --disable-interactivity -f https://raw.githubusercontent.com/maxbakhub/winposh/refs/heads/main/DSC/winget_configure_dsc_sample_win11.yaml

winget configure with yaml in URL

Заключение

WinGet с поддержкой PowerShell Desired State Configuration позволяет администраторам программно настраивать Windows-машины в точно заданное состояние с помощью декларативных YAML-файлов. Такой подход обеспечивает идемпотентность конфигурации и поддерживает концепцию Infrastructure as Code (IaC) при управлении средой Windows. WinGet с DSC — это аналог Ansible-playbook для Windows, открывающий возможности декларативного и автоматизированного управления конфигурацией корпоративных Windows-устройств.

Вам также может понравиться

оставить комментарий

Focus Mode