company_banner

Быстрая настройка серверов с помощью PowerShell Desired State Configuration

    Во многом работа системного администратора не отличается оригинальностью задач. Так или иначе, большинство заданий – это повторяющиеся операции, которые сводятся к созданию, удалению, изменению настроек, установки и настройки ролей и компонентов системы. Абсолютно естественным является желание максимально автоматизировать такие задачи. Одним из инструментов, спешащих на помощь администратору, является 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 для настройки ваших систем!

    Полезные ссылки


    • +7
    • 27,3k
    • 3

    Microsoft

    300,51

    Microsoft — мировой лидер в области ПО и ИТ-услуг

    Поделиться публикацией
    Комментарии 3
      0
      Для клиентских машин PowerShell DSC будет куда полезнее чем Desired Configuration Management в SCCM 2012, учитывая выше перечисленные преимущества.
      Но как отследить изменения настроек, если таковые были?
        0
        Запускаете Test-DscConfiguration. Если вернет True — значит изменений нет, если False — то изменения есть, и нужно заново применить конфигурацию.
        +1
        Аааа, они придумали Puppet! :)

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое