Partilhar via


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

Nota

Antes de habilitar a Configuração do Estado de Automação, gostaríamos que você soubesse que uma versão mais recente do DSC agora está disponível ao público, gerenciada por um recurso da Política do Azure chamado configuração de convidado. O serviço de configuração de convidado 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 convidado também inclui suporte a máquinas híbridas por meio de servidores habilitados para Arc.

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, clique em Configuração de estado (DSC).
  2. Clique na guia Configurações e, em seguida, clique no nome da configuração para compilar.
  3. Clique em 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, a folha Compilar configuração será aberta 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 pull 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 ela 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. Consulte Iniciando um runbook na Automação do Azure para saber mais sobre os parâmetros do runbook.

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.

Configuration compile parameters

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 objetos como PSCredential 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 o seguinte:

Ativos de credencial

As configurações de DSC na Automação do Azure podem fazer referência a ativos de credenciais de automação usando o Get-AutomationPSCredential cmdlet. Se uma configuração tiver um parâmetro que especifique um objeto, use Get-AutomationPSCredential passando o nome da cadeia de caracteres de um PSCredential ativo de credencial de Automação do Azure para o cmdlet para recuperar a credencial. Em seguida, faça uso desse objeto para o parâmetro que requer o PSCredential objeto. Nos bastidores, o ativo de credenciais da Automação do Azure com esse nome é recuperado e passado para a configuração. O exemplo abaixo mostra esse cenário em ação.

Manter as credenciais seguras em configurações de nó (documentos de configuração MOF) requer criptografar as credenciais no arquivo MOF de configuração do nó. Atualmente, você deve conceder permissão ao DSC do PowerShell 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 sua geração por meio de 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 Pode ignorar esta mensagem The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. 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ó (arquivos MOF) 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, clique em Configuração de Estado (DSC) em Gerenciamento de Configuração.

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

  3. Na página Importar, clique no í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.

    Browse for local file

  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. Clique em 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.

Import-AzAutomationDscNodeConfiguration -AutomationAccountName 'MyAutomationAccount' -ResourceGroupName 'MyResourceGroup' -ConfigurationName 'MyNodeConfiguration' -Path 'C:\MyConfigurations\TestVM1.mof'

Próximos passos