Partilhar via


Compilar configurações DSC na Configuração do Estado de Automação do Azure

Nota

A Configuração do Estado de Automação do Azure será desativada em 30 de setembro de 2027, faça a transição para a Configuração de Máquina do Azure até essa data. Para obter mais informações, consulte o anúncio da postagem no blog. O serviço de Configuração de Máquina do Azure combina recursos de Extensão DSC, Configuração de Estado de Automação do Azure e os recursos mais comumente solicitados dos comentários dos clientes. A Configuração de Máquina do Azure também inclui suporte a máquinas híbridas por meio de servidores habilitados para Arc.

Atenção

O Azure Automation DSC para Linux foi desativado em 30 de setembro de 2023. Para mais informações, consulte o anúncio.

Você pode compilar configurações de DSC (Configuração de Estado Desejado) na Configuração do Estado de Automação do Azure das seguintes maneiras:

  • Serviço de compilação da Configuração do Estado do Azure

    • Método Beginner com interface de usuário interativa
    • Rastreie facilmente o estado do trabalho
  • Windows PowerShell

    • Ligue do Windows PowerShell na estação de trabalho local ou no serviço de compilação
    • Integração com pipeline de teste de desenvolvimento
    • Fornecer valores de parâmetros complexos
    • Trabalhar com dados de nós e não nós em escala
    • Melhoria significativa do desempenho

Você também pode usar modelos do Azure Resource Manager com a extensão DSC (Configuração de Estado Desejado) do Azure para enviar configurações por push para suas VMs do Azure. A extensão DSC do Azure usa a estrutura do Agente de VM do Azure para entregar, promulgar e relatar configurações de DSC em execução em VMs do Azure. Para obter detalhes de compilação usando modelos do Azure Resource Manager, consulte Extensão de configuração de estado desejado com modelos do Azure Resource Manager.

Compilar uma configuração DSC na Configuração de Estado do Azure

Portal

  1. Na sua conta de automação, selecione Configuração de estado (DSC).
  2. Selecione na guia Configurações e, em seguida, selecione o nome da configuração a ser compilada.
  3. Selecione Compilar.
  4. Se a configuração não tiver parâmetros, você será solicitado a confirmar se deseja compilá-la. Se a configuração tiver parâmetros, o painel Configuração de compilação será aberto para que você possa fornecer valores de parâmetro.
  5. A página Trabalho de compilação é aberta para que você possa acompanhar o status do trabalho de compilação. Você também pode usar esta página para controlar as configurações de nó (documentos de configuração MOF) colocadas no servidor de recebimento de Configuração do Estado de Automação do Azure.

Azure PowerShell

Você pode usar Start-AzAutomationDscCompilationJob para começar a compilar com o Windows PowerShell. O código de exemplo a seguir inicia a compilação de uma configuração DSC chamada SampleConfig.

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

Start-AzAutomationDscCompilationJob Retorna um objeto de trabalho de compilação que você pode usar para controlar o status do trabalho. Em seguida, você pode usar esse objeto de trabalho de compilação com Get-AzAutomationDscCompilationJob para determinar o status do trabalho de compilação e Get-AzAutomationDscCompilationJobOutput para exibir seus fluxos (saída). O exemplo a seguir inicia a compilação da configuração SampleConfig, aguarda até que seja concluída e, em seguida, exibe seus fluxos.

$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

Declarar parâmetros fundamentais

A declaração de parâmetros em configurações DSC, incluindo tipos de parâmetros e propriedades, funciona da mesma forma que nos runbooks de Automação do Azure. Para saber mais sobre os parâmetros do runbook, consulte Iniciando um runbook na Automação do Azure.

O exemplo a seguir usa FeatureName e IsPresent parâmetros para determinar os valores das propriedades na configuração do nó ParametersExample.sample, geradas durante a compilação.

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
        }
    }
}

Você pode compilar configurações DSC que usam parâmetros básicos no portal de Configuração do Estado de Automação do Azure ou com o Azure PowerShell.

Portal

No portal, você pode inserir valores de parâmetro depois de clicar em Compilar.

Parâmetros de compilação de configuração

Azure PowerShell

O PowerShell requer parâmetros numa tabela hash, onde a chave corresponde ao nome do parâmetro e o valor é igual ao valor do parâmetro.

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

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

Para obter informações sobre como passar PSCredential objetos como parâmetros, consulte Ativos de credencial.

Compilar configurações contendo recursos compostos na Automação do Azure

O recurso Recursos compostos permite que você use configurações DSC como recursos aninhados dentro de uma configuração. Esse recurso permite a aplicação de várias configurações a um único recurso. Consulte Recursos compostos: Usando uma configuração DSC como um recurso para saber mais sobre recursos compostos.

Nota

Para que as configurações que contêm recursos compostos sejam compiladas corretamente, você deve primeiro importar para a Automação do Azure todos os recursos DSC dos quais os compostos dependem. Adicionar um recurso composto DSC não é diferente de adicionar qualquer módulo do PowerShell à Automação do Azure. Esse processo está documentado em Gerenciar módulos na Automação do Azure.

Gerenciar ConfigurationData ao compilar configurações na Automação do Azure

ConfigurationData é um parâmetro DSC interno que permite separar a configuração estrutural de qualquer configuração específica do ambiente ao usar o PowerShell DSC. Para obter mais informações, consulte Separar "O quê" de "Onde" no DSC do PowerShell.

Nota

Ao compilar na Configuração de Estado de Automação do Azure, você pode usar ConfigurationData no Azure PowerShell, mas não no portal do Azure.

O exemplo de configuração DSC a seguir usa ConfigurationData as $ConfigurationData palavras-chave e $AllNodes . Você também precisa do módulo xWebAdministration para este exemplo.

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'
        }
    }
}

Você pode compilar a configuração DSC anterior com o Windows PowerShell. O script a seguir adiciona duas configurações de nó ao serviço pull de Configuração do Estado de Automação do Azure: ConfigurationDataSample.MyVM1 e 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

Trabalhar com ativos na Automação do Azure durante a compilação

As referências de ativos são as mesmas na Configuração do Estado de Automação do Azure e nos runbooks. Para obter mais informações, consulte os seguintes artigos:

Ativos de credencial

Se uma configuração tiver um parâmetro que especifique um PSCredential objeto, use Get-AutomationPSCredential passando o nome de um ativo de credencial da Automação do Azure para o cmdlet para recuperar a credencial. A Automação do Azure passa a credencial para a configuração.

Para manter as credenciais seguras nas configurações do nó, criptografe as credenciais no arquivo MOF de configuração do nó. Você deve conceder permissão ao PowerShell DSC para credenciais de saída em texto sem formatação durante a geração de MOF de configuração do nó. O DSC do PowerShell não está ciente de que a Automação do Azure criptografa todo o arquivo MOF após ser gerado por um trabalho de compilação.

Você pode dizer ao DSC do PowerShell que não há problema em que as credenciais sejam geradas em texto sem formatação nos MOFs de configuração do nó gerado usando Dados de configuração. Você deve passar PSDscAllowPlainTextPassword = $true para ConfigurationData cada nome de bloco de nó que aparece na configuração DSC e usa credenciais.

O exemplo a seguir mostra uma configuração DSC que usa um ativo de credencial de automação.

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
        }
    }
}

Você pode compilar a configuração DSC anterior com o PowerShell. O código do PowerShell a seguir adiciona duas configurações de nó ao servidor de pull Configuração do Estado de Automação do Azure: CredentialSample.MyVM1 e CredentialSample.MyVM2.

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

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

Nota

Quando a compilação estiver concluída, poderá receber a mensagem de erro The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Você pode ignorar essa mensagem com segurança.

Compilar sua configuração DSC no Windows PowerShell

O processo para compilar configurações de DSC no Windows PowerShell está incluído na documentação de DSC do PowerShell Gravar, compilar e aplicar uma configuração. Você pode executar esse processo a partir de uma estação de trabalho do desenvolvedor ou dentro de um serviço de compilação, como o Azure DevOps. Em seguida, você pode importar os arquivos MOF produzidos compilando a configuração no serviço Configuração de Estado do Azure.

A compilação no Windows PowerShell também fornece a opção de assinar o conteúdo de configuração. O agente DSC verifica localmente uma configuração de nó assinado em um nó gerenciado. A verificação garante que a configuração aplicada ao nó vem de uma fonte autorizada.

Você também pode importar configurações de nó que foram compiladas fora do Azure. A importação inclui a compilação de uma estação de trabalho do desenvolvedor ou em um serviço como o Azure DevOps. Essa abordagem tem várias vantagens, incluindo desempenho e confiabilidade.

Nota

Um arquivo de configuração de nó não deve ter mais de 1 MB para permitir que a Automação do Azure o importe.

Para obter mais informações sobre a assinatura de configurações de nó, consulte Melhorias no WMF 5.1 - Como assinar a configuração e o módulo.

Importar uma configuração de nó no portal do Azure

  1. Na sua conta de automação, selecione Configuração de estado (DSC) em Gerenciamento de configuração.

  2. Na página Configuração de estado (DSC), selecione na guia Configurações e, em seguida, selecione Adicionar.

  3. Na página Importar, selecione o ícone de pasta ao lado do campo Arquivo de configuração do nó para procurar um arquivo MOF de configuração de nó no computador local.

    Procurar arquivo local

  4. Insira um nome no campo Nome da configuração. Esse nome deve corresponder ao nome da configuração a partir da qual a configuração do nó foi compilada.

  5. Selecione OK.

Importar uma configuração de nó com o Azure PowerShell

Você pode usar o cmdlet Import-AzAutomationDscNodeConfiguration para importar uma configuração de nó para sua conta de automação.

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

Próximos passos