Во многом работа системного администратора не отличается оригинальностью задач. Так или иначе, большинство заданий – это повторяющиеся операции, которые сводятся к созданию, удалению, изменению настроек, установки и настройки ролей и компонентов системы. Абсолютно естественным является желание максимально автоматизировать такие задачи. Одним из инструментов, спешащих на помощь администратору, является PowerShell Desired State Configuration, которая впервые была представлена в Windows Server 2012 R2. О том, что это такое и как может облегчить жизнь IT-специалиста использование Desired State Configuration мы и поговорим в этой статье.
Логично начать с того, что же вообще такое PowerShell Desired State Configuration. Я в большинстве случаев не люблю переводить английские термины, т.к. не всегда переведенный вариант отражает нужный смысл. В этом случае, мы имеем дело с исключением. Desired State Configuration переводится как «настройка требуемого состояния», и этот перевод как нельзя лучше отражает смысл технологии.
Используя PowerShell DSC, вы описываете как хотите, чтобы ваша система выглядела в конечном итоге, и далее происходит ее автоматическая настройка в соответствии с заданными требованиями.
PowerShell Desired State Configuration – это очень мощный инструмент, который может значительно облегчить вам процесс настройки системы. Недавно на портале MVA вышел курс, в котором рассказывается обо всех аспектах этой технологии. А в этой статье я хочу рассказать о технологии и её основных преимуществах.
Системные требования
Каких-то особенных системных требований у DSC нет. Desired State Configuration – это технология Microsoft, представленная в рамках Windows Management Framework 4.0, и предназначенная для декларативной конфигурации системы. Соответственно, для того, чтобы Desired State Configuration корректно работала, нужно установить Windows Management Framework 4.0 или выше. WMF 4.0 предустановлен в Windows 8.1 и Windows Server 2012 R2 (но для корректной работы нужно обновление KB28883200). Также этот Framework доступен для Windows 7, Windows Server 2008 R2 и Windows Server 2012 (тут нужно не забыть установить еще и .NET 4.5). В связи с тем, что можно бесплатно обновиться с Windows 8 на Windows 8.1, WMF 4 для Windows 8 не доступен.
Конфигурация и её применение
Теперь давайте поговорим о том, как работает Desired State Configuration. Давайте представим следующую задачу: нам необходимо развернуть веб-сайт на нашем сервере. Для этого нужно установить IIS, ASP .NET, а также сам контент сайта. Это не слишком сложная операция. Тем не менее, мы потратим определенное время, чтобы установить какие-то недостающие элементы или же компоненты сервера, которые необходимы для корректной работы. В случае, если установку мы осуществляем на уже используемом компьютере, можно столкнуться с различными конфликтами. Еще большая путаница возникнет, если нам нужно настроить сразу несколько серверов с одинаковой конфигурацией.
Использование Desired State Configuration позволяет решить эту проблему. Далее я приведу конфигурационный скрипт, с помощью которого мы проведем настройку.
Configuration IISWebsite
{
param(
$NodeName
)
Node $NodeName
{
WindowsFeature IIS
{
Ensure = "Present"
Name = "Web-Server"
}
WindowsFeature ASP
{
Ensure = "Present"
Name = "Web-Asp-Net45"
}
File WebContent
{
Ensure = "Present"
Type = "Directory"
SourcePath = "C:\Content\BakeryWebsite"
DestinationPath = "C:\inetpub\wwwroot\"
Recurse = $true
}
}
} IISWebsite -NodeName "DSC01"
С одной стороны, PowerShell DSC начинается с конфигурационного скрипта. С другой, этот скрипт не делает абсолютно НИ-ЧЕ-ГО! В нем мы просто декларативно описываем, как хотим, чтобы система выглядела.
В DSC было введено новое ключевое слово Configuration, с помощью которого описывается главный контейнер конфигурации. По сути, этот блок является функцией. Внутри блока Сonfiguration вы можете указать желаемые настройки для каждого из компьютеров, которые есть в вашем окружении.
Блок конкретного компьютера начинается с ключевого слова Node. Далее следует имя целевого компьютера, которое может быть как постоянным, так и задаваться при помощь переменной. Внутри блока Node вы уже указываете желаемую настройку для вашего конечного компьютера, с помощью ресурсов.
Ресурсы DSC – это специализированные модули PowerShell, с помощью которых и осуществляется финальная настройка целевых узлов. Ресурсы разделяются на встроенные и пользовательские. Встроенных ресурсов всего 12. Тем не менее легко можно дописать недостающие ресурсы, если возникнет такая необходимость.
Что происходит в нашем скрипте? Мы просто описываем то, как наша система должна выглядеть.
Ensure = "Present"
С помощью этой команды мы убеждаемся, что нужные нам компоненты будут присутствовать на конечном компьютере, после того, как конфигурация будет применена.
Применение конфигурации выглядит следующим образом:
Увеличить
После запуска конфигурационного скрипта создается MOF-файл (или Managed Object Format файл). Это текстовый файл, в котором содержатся все требования по настройке, которые в дальнейшем применяются на целевом компьютере. Имя MOF-файла будет соответствовать значению Node. Сам файл будет находиться в папке, название которой будет совпадать с названием Configuration. Здесь важно отметить, что использование MOF-файлов позволяет использовать DSC не только для настройки компьютеров под управлением Windows, но и под управлением Linux.
Далее необходимо MOF-файл передать на целевой компьютер (на котором мы хотим развернуть сайт). Конфигурация применяется двумя способами: с помощью метода Push (конфигурационный скрипт должен быть перенесен на конечный компьютер вручную) или метода Pull (создается Pull Server, который периодически проверяет корректность конфигурации, и если клиент сконфигурирован неверно, то Pull Server отправляет на него требуемые настройки). Применение конфигурации осуществляется с помощью следующего командлета:
Start-DscConfiguration –Path .\IISWebsite –Wait –Verbose
C помощью параметра –Path указываем путь к MOF-файлу. Время применения конфигурации зависит от того, насколько соответствует текущая настройка компьютера тем требованиям, что указаны в MOF-файле.
После применения конфигурации возможность PowerShell DSC не заканчиваются. Ведь часто нам нужно определить произошли ли какие-то изменения в настройках. Сделать это можно с помощью командлета:
Test-DscConfiguration –CimSession $session
Запустив его, мы запустим проверку: совпадает ли текущая конфигурация системы с той, что прописана в MOF-файле. Если конфигурации совпадают, то будет возвращено значение «True», в противном случае – «False».
Что делать, если мы узнаем об изменении конфигурации? Если мы используем PowerShell DSC достаточно всего лишь снова запустить командлет:
Start-DscConfiguration –Path .\IISWebsite –Wait –Verbose
И все недостающие элементы будут восстановлены.
Преимущества Desired State Configuration
Еще раз проговорю, в чем же заключаются преимущества PowerShell Desired State Configuration.
- Использование PowerShell DSC позволяет точно настроить конечный компьютер без каких-либо дополнительный проверок. Мы просто описываем как хотим, чтобы системы выглядела; все остальное делается автоматически.
- PowerShell DSC позволяет отследить возможные изменения настроек и быстро их исправить, опять-таки, без дополнительных проверок.
- С помощью PowerShell DSC можно одновременно и одинаково сконфигурировать несколько компьютеров.
Надеюсь, эта статья была вам полезной.
Подробнее о том, как создавать свои собственные ресурсы или как настроить Pull Server для PowerShell DSC вы можете узнать из курса на портале MVA.
Удачи в применение PowerShell Desired State Configuration для настройки ваших систем!