PowerShell DSC. SharePoint
Пример использования PowerShell Desired State Configuration при работе с SharePoint.
Desired State Configuration
PowerShell Desired State Configuration (DSC) - декларативная платформа управления, позволяющая развертывать, настраивать и отслеживать изменения в дальнейшем. Развертывание и конфигурация с помощью PowerShell-скриптов - это есть всегда и везде. Но вот механизма отслеживания изменений в сравнении с заданным/ожидаемым до выхода PowerShell DSC не было.
Как это работает
PowerShell DSC состоит из трех основных компонентов:
- Конфигурация (DSC Configuration) - декларативно заданная конфигурация, которую необходимо развернуть и/или состояние которой необходимо отслеживать;
- Ресурсы (DSC Resources) - описание того, как работать с каким-либо модулем (например SharePoint);
- Менеджер конфигурации (Local Configuration Manager) - механизм, "связывающий" ресурсы для работы с модулями системы и заданную конфигурацию.
В общем сценарий выглядит следующим образом:
- Создаем необходимую конфигурацию
- Компилируем её с помощью PowerShell DSC
- Используем результат на 2 шаге
- Приводим к необходимому состоянию
- Проверяем текущее состояние на соответствие
- Исправляем несоответствия в текущем состояние заданному
Читаем про использование учетных записей и получение сертификата и переходим к Hello World.
Демка
Небольшой пример использования PowerShell DSC в работе с SharePoint 2016, в котором я создам простую конфигурацию, применю её и покажу как отслеживать изменения.
Ресурсы
В примере используются ресурсы (DSC Resources) для работы с SharePoint: xSharePoint.
Если используется PowerShell 4, то качаем их и копируем в папку **%ProgramFiles%\WindowsPowerShell\Modules**:
Если установлен PowerShell 5, то получить необходимый модуль можно одним командлетом:
Install-Module -Name xSharePoint -Force
После установки исполняем скрипт
Get-DscResource
и убеждаемся, что необходимые ресурсы для работы с SharePoint есть в наличии:
Теперь PowerShell DSC умеет работать с SharePoint. Идем дальше
Конфигурация
Для примера я создал примитивную конфигурацию, в которой указал:
- Должно быть установлен wsp-пакет
- Активирована возможность
- Возможность Minimal Download Strategy должна быть активирована
Configuration DemoSharePointDSC {
param(
$AccountName
)
Import-DscResource -ModuleName xSharePoint
Node SP2016SRV
{
xSPFeature MDSFeatureEnabled
{
Name = "MDSFeature"
Url = "http://sp2016srv.dev.vitalyzhukov.ru"
Ensure = "Present"
FeatureScope = "Web"
PsDscRunAsCredential = $AccountName
}
}
}
$ConfigData = @{
AllNodes = @(
@{
NodeName = 'SP2016SRV'
PSDscAllowDomainUser = $true
PSDscAllowPlainTextPassword = $true
}
)
}
DemoSharePointDSC -InstallAccount (Get-Credential) -ConfigurationData $ConfigData
Конфигурация может быть параметризованной. В моем примере только один параметр - учетная запись, под которой необходимо активировать указанную фичу.
Компиляция
Для компиляции заданной конфигурации достаточно исполнить соответствующий скрипт:
Результат компиляции - MOF-файл:
Теперь можно использовать MOF-файл для приведения текущей конфигурации к указанной в MOF-файле и/или для проверки на соответствие текущей конфигурации описанному.
Проверка на соответствие конфигурации
При проверке на соответствие текущего состояния описанному в MOF-файле PowerShell DSC вернет свойство InDesiredState (false - не соответствует, true - соответствует).
Приведение к конфигурации
Единственное что надо сделать для приведения текущего состояния к описанному в конфигурации - исполнить командлет Start-DscConfigration, указав путь к папке, содержащий соответствующий MOF-файл:
Пользуемся!