Одним из нововведений, появившихся в PowerShell 4.0, стал механизм настройки требуемого состояния (DSC - Desired State Configuration), позволяющий задавать настройки ОС и приложений в виде конфигурационного файла с использованием синтаксиса PowerShell и затем применить их к компьютеру. Как и в других системах управления конфигурациями вроде Puppet или Ansible администратор описывает требуемую конфигурацию (целевое состояние) вместо указания конкретных команд или скриптов, которые должны быть выполнены.
Файл конфигурации DSC содержит описание целевого состояния для одного или нескольких узлов (node). Внутри описания содержится перечень ресурсов (resource) и настройки, которые должны быть к ним применены. Существует множество типов встроенных ресурсов, таких как file, environment, registry, script, service, user и т.д., позволяющих задавать описание для соответствующих объектов системы, например, ресурс типа service описывает требуется ли включить или отключить службу, и под какой учетной записью требуется ее запускать. Помимо встроенных ресурсов поддерживается добавление ресурсов от сторонних разработчиков, что позволяет расширить возможности DSC по конфигурированию системы.
Конфигурационный файл может включать в себя описание состояния одного или нескольких узлов.
Большим плюсом DSC является поддержка синтаксиса PowerShell, что позволяет упростить написание конфигурационных файлов. Например вместо того, чтобы описывать каждый сервис в отдельности:
можно использовать циклы и передавать значение параметров через переменные:
На основании конфигурационного файла для каждого узла генерируется отдельный файл в MOF формате (Management Object Format).
Существует два способа применения настроек из MOF файлов. При Push методе настройки распространяются с административной рабочей станции на целевые компьютеры через Windows Remote Management (WinRM). Для этого используется команда Start-DscConfiguration с аргументом -Path, которые указывает путь к каталогу, содержащему MOF файлы. Перед тем, как использовать Push метод требуется настроить политику выполнения "Set-ExecutionPolicy RemoteSigned" и включить удаленное выполнение PowerShell при помощи команды "Enable-PSRemoting".
Со временем настройки, сделанные с помощью DSC, могут изменяться. Проверить наличие расхождений между текущими настройками и конфигурационным файлом можно при помощи команды Test-DscConfiguration, а с помощью команды Get-DscConfiguration можно получить значение текущих настроек системы.
Во втором методе (Pull) настраиваемые компьютеры подключаются к файловому серверу (репозиторию конфигурационных файлов) и самостоятельно загружают и применяют настройки.
Для демонстрации работы DSC я создал конфигурационный файл для настройки виртуальной рабочей станции с ОС Windows 10 для работы в среде VDI. Файл отключает ряд неиспользуемых служб и задач из планировщика Windows, задает ряд настроек оптимальных для работы в виртуальной среде, создает локальную учетную запись пользователя с именем User и паролем "P@ssw0rd", копирует дистрибутив Horizon Agent с файлового сервера и выполняет установку.
Часть настроек выполняется при помощи ресурсов типа script, позволяющих выполнять произвольный код на PowerShell.
Подводя итоги, DSC является простым и эффективным способом привести состояние системы к желаемому виду, минимизируя количество кода, котое требуется дла этого написать.
Файл конфигурации DSC содержит описание целевого состояния для одного или нескольких узлов (node). Внутри описания содержится перечень ресурсов (resource) и настройки, которые должны быть к ним применены. Существует множество типов встроенных ресурсов, таких как file, environment, registry, script, service, user и т.д., позволяющих задавать описание для соответствующих объектов системы, например, ресурс типа service описывает требуется ли включить или отключить службу, и под какой учетной записью требуется ее запускать. Помимо встроенных ресурсов поддерживается добавление ресурсов от сторонних разработчиков, что позволяет расширить возможности DSC по конфигурированию системы.
Конфигурационный файл может включать в себя описание состояния одного или нескольких узлов.
Большим плюсом DSC является поддержка синтаксиса PowerShell, что позволяет упростить написание конфигурационных файлов. Например вместо того, чтобы описывать каждый сервис в отдельности:
можно использовать циклы и передавать значение параметров через переменные:
На основании конфигурационного файла для каждого узла генерируется отдельный файл в MOF формате (Management Object Format).
Существует два способа применения настроек из MOF файлов. При Push методе настройки распространяются с административной рабочей станции на целевые компьютеры через Windows Remote Management (WinRM). Для этого используется команда Start-DscConfiguration с аргументом -Path, которые указывает путь к каталогу, содержащему MOF файлы. Перед тем, как использовать Push метод требуется настроить политику выполнения "Set-ExecutionPolicy RemoteSigned" и включить удаленное выполнение PowerShell при помощи команды "Enable-PSRemoting".
Со временем настройки, сделанные с помощью DSC, могут изменяться. Проверить наличие расхождений между текущими настройками и конфигурационным файлом можно при помощи команды Test-DscConfiguration, а с помощью команды Get-DscConfiguration можно получить значение текущих настроек системы.
Во втором методе (Pull) настраиваемые компьютеры подключаются к файловому серверу (репозиторию конфигурационных файлов) и самостоятельно загружают и применяют настройки.
Для демонстрации работы DSC я создал конфигурационный файл для настройки виртуальной рабочей станции с ОС Windows 10 для работы в среде VDI. Файл отключает ряд неиспользуемых служб и задач из планировщика Windows, задает ряд настроек оптимальных для работы в виртуальной среде, создает локальную учетную запись пользователя с именем User и паролем "P@ssw0rd", копирует дистрибутив Horizon Agent с файлового сервера и выполняет установку.
Часть настроек выполняется при помощи ресурсов типа script, позволяющих выполнять произвольный код на PowerShell.
Подводя итоги, DSC является простым и эффективным способом привести состояние системы к желаемому виду, минимизируя количество кода, котое требуется дла этого написать.
0 коммент.:
Отправить комментарий