Большинство последних новинок Microsoft направлено на упрощение создания и управления вычислительных сред. В предрелизе WMF 5.0 заявлено хотя и небольшое количество новинок, но тем не менее они очень интересны.
Вышедший год назад Windows Server 2012 R2 вместе с PowerShell 4.0 получил интересную технологию — настройки требуемого состояния (Desired State Configuration, DSC) позволяющую разворачивать роли и контролировать состояние большого количества систем. Это явный шаг вперед, но пока еще недостаточный чтобы тягаться с unixовскими аналогами Puppet или Chef. Причина проста — установка любого софта ограниченного возможностями Windows Update. Здесь Windows явно проигрывает Unix количественно. Ведь не секрет что в репозитариях любого дистрибутива Linux можно найти тысячи программ на все случаи и которые ставятся одной командой. В DSC все действия на конечной системе выполняются при помощи ресурсов или провайдеров, на момент релиза их насчитывалось всего 12, и с их помощью можно было выполнить относительно простые задачи.
В мае 2014 стала доступна новая версия Windows Management Framework 5.0 Preview.
Список новинок назвать большим не получается: обновились DSС и среда Integrated Scripting Environment (ISE), три новых модуля — PackageManagement (ранее OneGet), модулей PowerShellGet и NetworkSwitch, плюс 14 новых командлетов (всего 30). Новый релиз пока будет работать только в английской версии Windows 8.1 и Windows Server 2012 R2, возможно к финалу это изменится
Из 14 командлетов большая часть позволяет получить определенную информацию: Get-ItemPropertyValue, Debug-Job, Get-CounterSample, Get-PerfomanceCollectro, Get-ServerBpaResult, Get-ServerClusterName, Get-ServerEvent, Get-ServerFeature, Get-ServerInventory, Get-ServerService, Get-StreamHash, Remove-ServerPerfomanceLog, Start-PerfomanceCollector и Stop-PerfomanceCollector. Назначение многих очевидно. Но документация по новинкам еще не полная и готовых примеров нет. Вероятно это исправят в релизу, наиболее интересен командлет Debug-Job. Указав в параметрах имя или Id процесса мы можем просмотреть отладочную информацию (рис.1).
Новые ресурсы DSC
В месте с WMF 5.0 поставляется новая версия DSC Resource Kit Wave 4 в которой появилось 6 модулей, содержащих 16 новых ресурсов и 3 ресурса обновлено (xPSDesiredStateConfiguration, xDscResourceDesigner, xDscDiagnostics). Названия новых модулей говорят сами за себя:
- xAzure — включает 6 DSC ресурсов для работы с Microsoft Azure;
- xJEA — 2 ресурса для настройки JEA (Just Enough Admin);
- xDnsServer — 2 ресурса для настройки Secondary zone и ZoneTransfer;
- xDhcpServer — 3 ресурса позволяющих указать параметры DHCP сервера;
- xWinEventLog — 1 ресурсами
- в xActiveDirectory добавлен xADDomainTrust.
После установки обновления команда Get-DSCResource покажет, что их общее количество составляет уже 67. Загрузить новые ресурсы можно и без установки WMF 5.0, используя PowerShellGet или при помощи PowerShell:
PS > Get-HotFix -Id KB2883200
PowerShellGet
По мере развития PowerShell стал обрастать модулями и дополнениями. Их стало на столько много, что найти нужный большая проблема и часто хорошие проекты просто теряются. Решение очень простое — создать репозитарий модулей. Так и появился PowerShellGet — менеджер пакетов для модулей PowerShell. Нужно отметить что Microsoft не стали изобретать велосипед, а взяли наработки проекта NuGet и построив по верх него новый модуль PowerShellGet. Избавив себя от разработки протокола и инструментом управления репозитарием. Естественно поддерживаются все репозитарии совместимые с NuGet. Модуль содержит 4 командлета: Find-Module, Install-Module, Publish-Module и Uninstall-Module.
PS > Get-Command -Module PowerShellGet
Попробуем найти модуль xPSDesiredStateConfiguration
PS > Find-Module xPSDesiredStateConfiguration
Подтверждаем запрос на подключение к NuGet. Если нужный модуль в репозитарии есть, устанавливаем его при помощи командлета Install-Module.
PS > Install-Module xPSDesiredStateConfiguration
Предусмотрена возможность создания собственного репозитария. Процесс состоит из двух этапов: создание репозитария и его подключение при помощи переменных PowerShellGet. Построить свой репозитарий можно при помощи NuGet, специального инструмента NuGetGallery (требует Visual Studio и развертывания IIS) или воспользоваться возможностями онлайн хранилища ProGet [6]. Последний самый наверное быстрый и удобный, позволяет создавать локальные репозитарии и получать к ним доступ при помощи веб-интерфейса, утилиты NuGet Package Explorer или средствами OneGet. Предлагается две версии: Free и Enterprise. Бесплатной вполне хватает для многих задач. Поддерживается установка от Windows XP и новее, также потребуется IIS от 7 с ASP.NET 4.0 и SQL Server от 2005. Все подробности по развертыванию изложены в документации ProGet. Если нужно подключить свой репозитарий то указываем его URL в переменных PSGalleryPublishUri и PSGallerySourceUri. По многим вопросам развертывания наилучшим пособием будет документация MSDN.
Модуль Network Switch
В Windows Server 2012 была представлена концепция Data Center Abstraction (DAL) — представляющая собой уровень абстракции использующий стандарты DMTF и Windows CIM для управления всеми ресурсами ЦОД: физические серверы, устройства хранения данных, сетевых устройств, гипервизоры, операционные системы, приложения и сервисы и так далее. То есть любой разработчик может предложить свои совместимые инструменты для управления датацентрами на базе Windows. В том числе такая возможность была реализована и при помощи CIM командлетов, хотя наглядной и удобной их применение назвать нельзя.
В WMF 5.0 добавлен модуль управления NetworkSwitch, использующий DAL и позволяющий управлять сетевыми L2 уровня коммутаторами Windows. Команда:
PS > Get-Command -Module NetworkSwitch
Покажет что модуль включает 19 командлетов.
Документация пока по командлетам довольно скупая и здесь придется немного поэкспериментирорвать. При этом для создания и правления виртуальным роутером по прежнему задействуются CIM командлеты.
Создаем CIM сессию, объявляем переменные:
PS> $ip = "192.168.0.2" PS> $sessionOption = New-CimSessionOption -UseSsl -SkipCACheck -SkipCNCheck -SkipRevocationCheck PS> $s = New-CimSession -CN $ip -port 1234 -Auth Basic -Credential admin -SessionOption $sessionOption
Используя Get-NetworkSwitchFeature можем просмотреть настройки:
PS> Get-NetworkSwitchFeature -CimSession $s
Список портов:
PS> Get-NetworkSwitchEthernetPort -CimSession $s | Format-Table InstanceID, ElementName, MaxSpeed, PortNumber, EnabledState
Чтобы отключить определенный порт применяем командлет Disable-NetworkSwitchEthernetPort:
PS> Disable-NetworkSwitchEthernetPort -PortNumber 1 -CimSession $s
И смотрим его состояние:
PS>Get-NetworkSwitchEthernetPort -PortNumber 1 -CimSession $s | FT InstanceID, ElementName, MaxSpeed, PortNumber, EnabledState
DSC для Linux
Эта функция не идет в комплекте с WMF 5.0, но тем не менее она стоит того чтобы хотя бы вкратце упомянуть в обзоре. Тем более что DSC для Linux уже достиг состояния 1.0.0. И теперь мы можем использовать для управления конфигурацией Linux и Windows одну и туже же платформу. В настоящее время реализованы 5 типов ресурсов:
- nxFile — управление файлами и каталогами;
- nxScript — запуск сценариев на целевых узлах;
- nxUser — управление учетными записями пользователей Linux;
- nxGroup — управление учетными записями групп Linux;
- nxService — управляет сервисами/демонами Linux (System-V, upstart, Systemd)
Для работы используется OpenSource реализация Open Management Infrastructure (OMI) в качестве CIM сервера и протокол на основе SOAP — WS-Management.
Поддерживается только “push” режим. Соответственно принцип использования немного отличается от управления Windows системами. А процесс развертывания требует внимательности.