Создание, компиляция и применение конфигурации
Область применения: Windows PowerShell 4.0, Windows PowerShell 5.0
В этом упражнении демонстрируется создание и применение конфигурации Desired State Configuration (DSC). В следующем примере вы узнаете, как написать и применить очень простую конфигурацию. Конфигурация будет гарантировать, что файл "HelloWorld.txt" существует на локальном компьютере. В случае удаления файла DSC будет создавать его заново при очередном обновлении.
См. дополнительные сведения об особенностях работы с DSC в обзоре платформы Desired State Configuration для разработчиков.
Требования
Для выполнения этого примера вам понадобится компьютер с PowerShell 4.0 или более поздней версии.
Запись конфигурации
Конфигурация DSC — это специальная функция PowerShell, которая определяет способ настройки одного или нескольких целевых компьютеров (узлов).
В интегрированной среде сценариев PowerShell или другом редакторе PowerShell введите следующее:
Configuration HelloWorld {
# Import the module that contains the File resource.
Import-DscResource -ModuleName PsDesiredStateConfiguration
# The Node statement specifies which targets to compile MOF files for, when
# this configuration is executed.
Node 'localhost' {
# The File resource can ensure the state of files, or copy them from a
# source to a destination with persistent updates.
File HelloWorld {
DestinationPath = "C:\Temp\HelloWorld.txt"
Ensure = "Present"
Contents = "Hello World from DSC!"
}
}
}
Важно!
В более сложных сценариях, когда нужно импортировать несколько модулей, чтобы работать с множеством ресурсов DSC в одной конфигурации, обязательно помещайте каждый модуль в отдельную строку с помощью Import-DscResource
. Такое поведение проще поддерживать в системе управления версиями. Оно требуется при работе с DSC в Azure State Configuration.
Configuration HelloWorld {
# Import the module that contains the File resource.
Import-DscResource -ModuleName PsDesiredStateConfiguration
Import-DscResource -ModuleName xWebAdministration
Сохраните файл как "HelloWorld.ps1".
Определение конфигурации аналогично определению функции. Блок Node определяет настраиваемый целевой узел; в нашем примере это localhost
.
Конфигурация вызывает один элемент resources, а именно ресурс File
. Ресурсы обеспечивают для целевого узла состояние, определенное в конфигурации.
Компиляция конфигурации
Чтобы применить конфигурацию DSC к узлу, ее сначала нужно скомпилировать в MOF-файл. Выполнение конфигурации, как и функции, скомпилирует один файл .mof
для каждого узла, определенного в блоке Node
. Чтобы запустить конфигурацию, необходимо ввести по префиксу-точке скрипт HelloWorld.ps1
в текущей области. Дополнительные сведения см. в статье about_Scripts.
Введите по префиксу-точке скрипт HelloWorld.ps1
, указав путь, где вы сохранили его, после .
(точка, пробел). Затем можно запустить конфигурацию, вызвав ее как функцию. Можно также вызвать функцию конфигурации в нижней части скрипта, чтобы не нужно было использовать префикс-точку.
. C:\Scripts\HelloWorld.ps1
HelloWorld
Будут созданы следующие выходные данные:
Directory: C:\Scripts\HelloWorld
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/13/2017 5:20 PM 2746 localhost.mof
Применение конфигурации
Теперь, когда у вас есть скомпилированный MOF-файл, вы можете применить конфигурацию к целевому узлу (в нашем примере это локальный компьютер), вызвав командлет Start-DscConfiguration.
Командлет Start-DscConfiguration
сообщает локальному диспетчеру конфигураций (LCM) (ядру DSC) о необходимости применить конфигурацию. LCM вызывает ресурсы DSC для применения конфигурации.
Используйте приведенный ниже код для выполнения командлета Start-DSCConfiguration
. Укажите путь к каталогу, где хранится localhost.mof
, в параметре Path. Командлет Start-DSCConfiguration
просматривает каталог, указанный для любых файлов вида <computername>.mof
. Командлет Start-DSCConfiguration
пытается применить каждый файл .mof
, который найдет, к computername
, указанному в имени файла (localhost, server01, dc-02 и т. д.).
Примечание
Если параметр -Wait
не указан, Start-DSCConfiguration
создает фоновое задание для выполнения операции. Указание параметра -Verbose
позволяет наблюдать подробные результаты операции. И -Wait
, и -Verbose
— необязательные параметры.
Start-DscConfiguration -Path C:\Scripts\HelloWorld -Verbose -Wait
Тестирование конфигурации
Когда командлет Start-DSCConfiguration
будет завершен, вы увидите файл HelloWorld.txt
в указанном месте. Можно проверить его содержимое с помощью командлета Get-Content.
Вы также можете протестировать текущее состояние с помощью Test-DSCConfiguration.
Результат должен быть равен True
, если узел в настоящее время соответствует применяемой конфигурации.
Test-DSCConfiguration
True
Get-Content -Path C:\Temp\HelloWorld.txt
Hello World from DSC!
Повторное применение конфигурации
Чтобы повторно применить конфигурацию, можно удалить текстовый файл, созданный вашей конфигурацией. Затем используйте командлет Start-DSCConfiguration
с параметром -UseExisting
. Параметр -UseExisting
указывает Start-DSCConfiguration
повторно применить файл "current.mof", который представляет последнюю успешно примененную конфигурацию.
Remove-Item -Path C:\Temp\HelloWorld.txt
Дальнейшие действия
- См. дополнительные сведения о конфигурации DSC.
- См. дополнительные сведения о том, как создавать доступные пользовательские ресурсы DSC.
- Конфигурации DSC и ресурсы доступны в коллекции PowerShell.