Компиляция конфигураций DSC в Cлужба автоматизации Azure State Configuration

Примечание.

Cлужба автоматизации Azure State Configuration будет прекращена 30 сентября 2027 г., перейдите на Azure Machine Configuration к этой дате. Дополнительные сведения см. в анонсе блога. Служба конфигурации компьютера Azure объединяет функции расширения DSC, Cлужба автоматизации Azure State Configuration и наиболее часто запрашиваемые функции из отзывов клиентов. Конфигурация машины Azure также включает поддержку гибридных машин через серверы с функцией Arc.

Внимание

Ссылки на навигацию "Добавление", "Создание" и "Коллекция" будут удалены с портала 31 марта 2025 г.

Внимание

Cлужба автоматизации Azure DSC для Linux вышел на пенсию 30 сентября 2023 года. Дополнительные сведения см. в объявлении о выпуске.

Конфигурации Desired State Configuration (DSC) можно компилировать в Cлужба автоматизации Azure State Configuration следующим образом:

  • служба компиляции конфигурации состояния Azure

    • Самый простой способ с интерактивным пользовательским интерфейсом
    • Легко отслеживаемое состояние задания.
  • Windows PowerShell

    • Вызов Windows PowerShell на локальной рабочей станции или службе сборки
    • Интеграция с конвейером тестирования разработки
    • Предоставление значений сложных параметров
    • Работа с данными узла и с данными, отличными от данных узла, в большом масштабе
    • Значительное повышение производительности

Вы также можете использовать шаблоны Azure Resource Manager с расширением Azure Desired State Configuration (DSC) для отправки конфигураций на виртуальные машины Azure. Расширение DSC Azure использует платформу агента виртуальных машин Azure для доставки, принятия и создания отчетов о конфигурациях DSC, работающих на Azure виртуальных машинах. Сведения о компиляции с помощью шаблонов Azure Resource Manager см. в расширении Desired State Configuration с помощью шаблонов Azure Resource Manager.

Компиляция конфигурации DSC в Azure State Configuration

Портал

  1. В учетной записи службы автоматизации выберите конфигурацию состояния (DSC).
  2. Выберите на вкладке "Конфигурации" , а затем выберите имя конфигурации для компиляции.
  3. Выберите Компилировать.
  4. Если конфигурация не имеет параметров, вас попросят подтвердить, хотите ли вы ее скомпилировать. Если конфигурация имеет параметры, откроется панель Конфигурация компиляции, чтобы предоставить значения параметров.
  5. Откроется страница "Задание компиляции", на которой можно будет отследить состояние задания компиляции. Эту страницу можно также использовать для отслеживания конфигураций узлов (документов конфигурации MOF), размещенных на сервере вытягивания Cлужба автоматизации Azure State Configuration.

Azure PowerShell

Чтобы начать компиляцию с Windows помощью PowerShell, можно использовать Start-AzAutomationDscCompilationJob. В следующем примере кода начинается компилирование конфигурации DSC под именем SampleConfig.

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

Start-AzAutomationDscCompilationJob возвращает объект задания компилирования, с помощью которого вы можете отслеживать состояние задания. Затем можно использовать этот объект задания компиляции с Get-AzAutomationDscCompilationJob, чтобы определить состояние задания компиляции, и Get-AzAutomationDscCompilationJobOutput, чтобы просмотреть его потоки (выходные данные). Следующий пример запускает компиляцию конфигурации SampleConfig, ожидает завершения, а затем отображает потоки.

$CompilationJob = Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

while($null -eq $CompilationJob.EndTime -and $null -eq $CompilationJob.Exception)
{
    $CompilationJob = $CompilationJob | Get-AzAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzAutomationDscCompilationJobOutput –Stream Any

Объявление базовых параметров

Объявление параметров в конфигурациях DSC, включая типы параметров и свойства, работает так же, как и в модулях Runbook Cлужба автоматизации Azure. Дополнительные сведения о параметрах Runbook см. в статье Starting a Runbook в Cлужба автоматизации Azure.

В следующем примере используются параметры FeatureName и IsPresent для определения значений свойств в конфигурации узла ParametersExample.sample, созданной во время компиляции.

Configuration ParametersExample
{
    param(
        [Parameter(Mandatory=$true)]
        [string] $FeatureName,

        [Parameter(Mandatory=$true)]
        [boolean] $IsPresent
    )

    $EnsureString = 'Present'
    if($IsPresent -eq $false)
    {
        $EnsureString = 'Absent'
    }

    Node 'sample'
    {
        WindowsFeature ($FeatureName + 'Feature')
        {
            Ensure = $EnsureString
            Name   = $FeatureName
        }
    }
}

Вы можете компилировать конфигурации DSC, использующие базовые параметры, на портале Cлужба автоматизации Azure State Configuration или с помощью Azure PowerShell.

Портал

Чтобы ввести значения параметров на портале, нажмите кнопку Компилировать.

Параметры компиляции конфигурации

Azure PowerShell

PowerShell требует параметры в хэш-таблице hashtable, где ключ соответствует имени параметра, а значение равно значению параметра.

$Parameters = @{
    'FeatureName' = 'Web-Server'
    'IsPresent' = $False
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters

Сведения о передаче объектов PSCredential как параметров см. в разделе Учетные активы.

Компиляция конфигураций, содержащих составные ресурсы в Cлужба автоматизации Azure

Функция Составные ресурсы позволяют использовать конфигурации DSC в качестве вложенных ресурсов в рамках конфигурации. Эта функция обеспечивает применение нескольких конфигураций к одному ресурсу. См. составные ресурсы: использование конфигурации DSC в качестве ресурса для получения дополнительных сведений о составных ресурсах.

Примечание.

Чтобы конфигурации, содержащие составные ресурсы, компилировались правильно, необходимо сначала импортировать в Cлужба автоматизации Azure все ресурсы DSC, от которых зависят составные ресурсы. Добавление составного ресурса DSC ничем не отличается от добавления модуля PowerShell в Cлужба автоматизации Azure. Этот процесс задокументирован в разделе Управление модулями в Cлужба автоматизации Azure.

Управление ConfigurationData при компиляции конфигураций в Cлужба автоматизации Azure

Встроенный параметр DSC ConfigurationData позволяет при использовании PowerShell DSC отделить конфигурацию структуры от любой конфигурации среды. Для получения дополнительной информации см. Разделение "что" от "где" в PowerShell DSC.

Примечание.

При компиляции в Cлужба автоматизации Azure State Configuration можно использовать ConfigurationData в Azure PowerShell, но не на портале Azure.

В следующем примере конфигурации DSC используется ConfigurationData посредством ключевых слов $ConfigurationData и $AllNodes. Для этого примера также нужен модуль xWebAdministration.

Configuration ConfigurationDataSample
{
    Import-DscResource -ModuleName xWebAdministration -Name MSFT_xWebsite

    Write-Verbose $ConfigurationData.NonNodeData.SomeMessage

    Node $AllNodes.Where{$_.Role -eq 'WebServer'}.NodeName
    {
        xWebsite Site
        {
            Name         = $Node.SiteName
            PhysicalPath = $Node.SiteContents
            Ensure       = 'Present'
        }
    }
}

Вы можете скомпилировать предыдущую конфигурацию DSC с помощью Windows PowerShell. Следующий скрипт добавляет две конфигурации узлов в службу извлечения Cлужба автоматизации Azure State Configuration: ConfigurationDataSample.MyVM1 и ConfigurationDataSample.MyVM3.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = 'MyVM1'
            Role = 'WebServer'
        },
        @{
            NodeName = 'MyVM2'
            Role = 'SQLServer'
        },
        @{
            NodeName = 'MyVM3'
            Role = 'WebServer'
        }
    )

    NonNodeData = @{
        SomeMessage = 'I love Azure Automation State Configuration and DSC!'
    }
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ConfigurationDataSample' -ConfigurationData $ConfigData

Работа с ресурсами в Cлужба автоматизации Azure во время компиляции

Ссылки на ресурсы одинаковы как в Cлужба автоматизации Azure State Configuration, так и в модулях Runbook. Дополнительные сведения см. в следующих статьях:

Ресурсы учетных данных

Если в конфигурации есть параметр, указывающий на объект PSCredential, используйте Get-AutomationPSCredential, передав командлету имя ресурса учетных данных Cлужба автоматизации Azure для получения этих учетных данных. Cлужба автоматизации Azure передает учетные данные в конфигурацию.

Чтобы обеспечить безопасность учетных данных в конфигурациях узлов, зашифруйте учетные данные в MOF-файле конфигурации узла. Необходимо предоставить PowerShell DSC разрешение на вывод учетных данных в виде обычного текста во время создания MOF конфигурации узла. PowerShell DSC не знает, что Cлужба автоматизации Azure шифрует весь MOF-файл после создания задания компиляции.

Вы можете указать PowerShell DSC, что разрешено выводить учетные данные в виде обычного текста в MOF-файлах конфигурации узла, используя данные конфигурации. PSDscAllowPlainTextPassword = $true следует передать через ConfigurationData для каждого имени блока узла, которое отображается в конфигурации DSC и для которого нужны учетные данные.

В следующем примере показана конфигурация DSC, использующая ресурс учетных данных в системе автоматизации.

Configuration CredentialSample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    $Cred = Get-AutomationPSCredential 'SomeCredentialAsset'

    Node $AllNodes.NodeName
    {
        File ExampleFile
        {
            SourcePath      = '\\Server\share\path\file.ext'
            DestinationPath = 'C:\destinationPath'
            Credential      = $Cred
        }
    }
}

Вы можете компилировать конфигурацию DSC, показанную выше, с помощью PowerShell. Следующий код PowerShell добавляет две конфигурации узлов на сервер извлечения Cлужба автоматизации Azure State Configuration: CredentialSample.MyVM1 и CredentialSample.MyVM2.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = '*'
            PSDscAllowPlainTextPassword = $True
        },
        @{
            NodeName = 'MyVM1'
        },
        @{
            NodeName = 'MyVM2'
        }
    )
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData

Примечание.

После завершения компиляции может появиться сообщение об ошибке The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Вы можете безопасно игнорировать это сообщение.

Компиляция конфигурации DSC в Windows PowerShell

Процесс компиляции конфигураций DSC в Windows PowerShell описан в документации PowerShell DSC, в разделе Написание, компиляция и применение конфигурации. Этот процесс можно выполнить на рабочей станции разработчика или в службе сборки, например Azure DevOps. Затем можно импортировать MOF-файлы, созданные путем компиляции конфигурации в службу Azure State Configuration.

Компиляция в Windows PowerShell также предоставляет возможность подписывать содержимое конфигурации. Агент DSC проверяет конфигурацию подписанного узла локально на управляемом узле. Проверка гарантирует, что конфигурация, примененная к узлу, получена из полномочного источника.

Вы также можете импортировать конфигурации узлов, скомпилированные за пределами Azure. Импорт включает компиляцию с рабочей станции разработчика или в службу, например Azure DevOps. Такой подход имеет несколько преимуществ, включая производительность и надежность.

Примечание.

Файл конфигурации узла не должен превышать 1 МБ, чтобы разрешить Cлужба автоматизации Azure импортировать его.

Дополнительные сведения о том, как подписывать конфигурации узла, см. в разделе Улучшения в WMF 5.1: подпись конфигурации и модуля.

Импорт конфигурации узла на портале Azure

  1. В учетной записи службы автоматизации выберите конфигурацию состояния (DSC) в разделе "Управление конфигурацией".

  2. На странице "Конфигурация состояния" (DSC) выберите на вкладке "Конфигурации " и нажмите кнопку "Добавить".

  3. На странице "Импорт" щелкните значок папки рядом с полем "Файл конфигурации узла", чтобы найти MOF-файл конфигурации узла на локальном компьютере.

    Поиск локального файла

  4. В текстовом поле Имя конфигурации введите имя. Это имя должно совпадать с именем конфигурации, из которой была скомпилирована данная конфигурация узла.

  5. Нажмите ОК.

Импорт конфигурации узла с помощью Azure PowerShell

Для импорта конфигурации узла в учетную запись службы автоматизации можно использовать командлет Import-AzAutomationDscNodeConfiguration.

$importAzAutomationDscNodeConfigurationSplat = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName = 'MyResourceGroup'
    ConfigurationName = 'MyNodeConfiguration'
    Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat

Следующие шаги