Partilhar via


Configuração do estado de Automação do Azure para planejamento de migração de configuração de máquina

A configuração da máquina é a implementação mais recente da funcionalidade que foi fornecida pela Configuração do Estado de Automação do Azure (também conhecida como Configuração de Estado Desejado da Automação do Azure ou AADSC). Quando possível, deve planear mover o conteúdo e os computadores para o novo serviço. Este artigo apresenta a documentação de orientação sobre o desenvolvimento de uma estratégia de migração da Automatização do Azure para a configuração do computador.

Novos recursos na configuração da máquina atendem às solicitações dos clientes:

  • Aumento do limite de tamanho para configurações para 100 MB
  • Relatórios avançados através do Azure Resource Graph, incluindo ID e estado do recurso
  • Gerencie várias configurações para a mesma máquina
  • Quando as máquinas se desviam do estado desejado, você controla quando ocorre a correção
  • Linux e Windows consomem recursos DSC baseados em PowerShell

Antes de começar, é uma boa ideia ler as informações de visão geral conceitual na página Configuração da máquina da Política do Azure.

Compreender a migração

A melhor abordagem para a migração é reimplementar o conteúdo primeiro e, em seguida, migrar as máquinas virtuais. Esta seção descreve as etapas esperadas para a migração.

  1. Exportar as configurações da Automatização do Azure
  2. Descubra os requisitos do módulo e carregue-os em seu ambiente
  3. Compilar configurações
  4. Criar e publicar pacotes de configuração de máquina
  5. Pacotes de configuração da máquina de teste
  6. Máquinas híbridas integradas ao Azure Arc
  7. Cancelar o registro de servidores da Configuração do Estado de Automação do Azure
  8. Atribuir configurações a servidores usando a configuração da máquina

A configuração da máquina usa o DSC versão 3 com o PowerShell versão 7. DSC versão 3 pode coexistir com versões mais antigas do DSC no Windows e Linux. As implementações são separadas. No entanto, não há deteção de conflitos.

A configuração da máquina não requer a publicação de módulos ou configurações em um serviço ou a compilação em um serviço. Em vez disso, você desenvolve e testa conteúdo usando ferramentas criadas especificamente e publica o conteúdo em qualquer lugar onde a máquina possa acessar por HTTPS (normalmente o Armazenamento de Blobs do Azure).

Se você decidir ter máquinas em ambos os serviços por algum período de tempo, não há barreiras técnicas. Os dois serviços são independentes.

Exportar conteúdos da Automatização do Azure

Comece descobrindo e exportando conteúdo da Configuração do Estado de Automação do Azure para um ambiente de desenvolvimento onde você cria, testa e publica pacotes de conteúdo para configuração de máquina.

Configurações

Você só pode exportar scripts de configuração da Automação do Azure. Não é possível exportar configurações de nó ou arquivos MOF compilados. Se você publicou arquivos MOF diretamente na Conta de Automação e não tem mais acesso ao arquivo original, precisará recompilar a partir de seus scripts de configuração privados. Se não conseguir encontrar a configuração original, você deve recriá-la.

Para exportar scripts de configuração da Automação do Azure, primeiro identifique a conta de Automação do Azure que tem as configurações e o nome do Grupo de Recursos no qual a Conta de Automação está implantada.

Instale o módulo do PowerShell Az.Automation.

Install-Module -Name Az.Automation

Em seguida, use o comando para identificar suas Contas de Automação e o Get-AzAutomationAccount Grupo de Recursos onde elas estão implantadas. As propriedades ResourceGroupName e AutomationAccountName são importantes para as próximas etapas.

Get-AzAutomationAccount
SubscriptionId        : <your-subscription-id>
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 :
Plan                  :
CreationTime          : 6/30/2021 11:56:17 AM -05:00
LastModifiedTime      : 6/30/2021 11:56:17 AM -05:00
LastModifiedBy        :
Tags                  : {}

Descubra as configurações na sua conta de automação. A saída tem uma entrada por configuração. Se você tiver muitos, armazene as informações como uma variável para que seja mais fácil de trabalhar.

$getParams = @{
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
}

Get-AzAutomationDscConfiguration @getParams
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 : Published
Name                  : <your-configuration-name>
Tags                  : {}
CreationTime          : 6/30/2021 12:18:26 PM -05:00
LastModifiedTime      : 6/30/2021 12:18:26 PM -05:00
Description           :
Parameters            : {}
LogVerbose            : False

Finalmente, exporte cada configuração para um arquivo de script local usando o comando Export-AzAutomationDscConfiguration. O nome de arquivo resultante usa o padrão \ConfigurationName.ps1.

$exportParams = @{
    OutputFolder          = '<location-on-your-machine>'
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
    Name                  = '<your-configuration-name>'
}
Export-AzAutomationDscConfiguration @exportParams
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09

Exportar configurações usando o pipeline do PowerShell

Depois de descobrir suas contas e o número de configurações, convém exportar todas as configurações para uma pasta local em sua máquina. Para automatizar esse processo, canalize a saída de cada comando nos exemplos anteriores para o próximo comando.

O exemplo exporta cinco configurações. O padrão de produção é o único indicador de sucesso.

Get-AzAutomationAccount |
    Get-AzAutomationDscConfiguration |
    Export-AzAutomationDSCConfiguration -OutputFolder <location on your machine>
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09

Considere a decomposição de arquivos de configuração complexos

A configuração da máquina pode gerenciar mais de uma configuração por máquina. Muitas configurações escritas para a Configuração do Estado de Automação do Azure assumiram a limitação de gerenciar uma única configuração por máquina. Para aproveitar os recursos expandidos oferecidos pela configuração da máquina, você pode dividir arquivos de configuração grandes em muitas configurações menores, onde cada uma lida com um cenário específico.

Não há orquestração na configuração da máquina para controlar a ordem de como as configurações são classificadas. Mantenha as etapas de uma configuração juntas em um pacote se for necessário que elas aconteçam sequencialmente.

Módulos

Não é possível exportar módulos da Automação do Azure ou correlacionar automaticamente quais configurações exigem quais módulos e versões. Deve ter os módulos no ambiente local para criar um novo pacote de configuração do computador. Para criar uma lista de módulos necessários para a migração, use o PowerShell para consultar a Automação do Azure para obter o nome e a versão dos módulos.

Se você estiver usando módulos que são criados de forma personalizada e só existem em seu ambiente de desenvolvimento privado, não é possível exportá-los da Automação do Azure.

Se você não conseguir encontrar um módulo personalizado em seu ambiente que seja necessário para uma configuração e na conta, não poderá compilar a configuração. Portanto, não é possível migrar a configuração.

Listar módulos importados na Automação do Azure

Para recuperar uma lista de todos os módulos instalados em sua conta de automação, use o Get-AzAutomationModule comando. A propriedade IsGlobal informa se o módulo está incorporado à Automação do Azure sempre ou se foi publicado na conta.

Por exemplo, para criar uma lista de todos os módulos publicados em qualquer uma das suas contas.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false

Você também pode usar a Galeria do PowerShell como uma ajuda para encontrar detalhes sobre módulos que estão disponíveis publicamente. O exemplo a seguir lista os módulos que são incorporados em novas contas de automação e contêm recursos DSC.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $true |
    Find-Module -ErrorAction SilentlyContinue |
    Where-Object {'' -ne $_.Includes.DscResource} |
    Select-Object -Property Name, Version -Unique |
    Format-Table -AutoSize
Name                       Version
----                       -------
AuditPolicyDsc             1.4.0
ComputerManagementDsc      8.4.0
PSDscResources             2.12.0
SecurityPolicyDsc          2.10.0
xDSCDomainjoin             1.2.23
xPowerShellExecutionPolicy 3.1.0.0
xRemoteDesktopAdmin        1.1.0.0

Se os módulos foram importados da Galeria do PowerShell, você pode canalizar a saída diretamente Find-Module para o Install-Module. Canalizar a saída entre comandos fornece uma solução para carregar um ambiente de desenvolvedor com todos os módulos atualmente em uma Conta de Automação, se eles estiverem disponíveis na Galeria do PowerShell.

Você pode usar a mesma abordagem para extrair módulos de um feed NuGet personalizado se tiver registrado o feed em seu ambiente local como um repositório PowerShellGet.

O Find-Module comando neste exemplo não suprime erros, o que significa que todos os módulos não encontrados na galeria retornam uma mensagem de erro.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false |
    Find-Module |
    Where-Object { '' -ne $_.Includes.DscResource } |
    Install-Module

Inspecionando scripts de configuração para requisitos de módulo

Se você exportou scripts de configuração da Automação do Azure, também pode revisar o conteúdo para obter detalhes sobre quais módulos são necessários para compilar cada configuração em um arquivo MOF. Essa abordagem só é necessária se você encontrar configurações em suas contas de automação onde os módulos foram removidos. As configurações não seriam mais úteis para máquinas, mas ainda poderiam estar na conta.

Na parte superior de cada arquivo, procure uma linha que inclua Import-DscResource. Este comando só é aplicável dentro de uma configuração e é usado para carregar módulos no momento da compilação.

Por exemplo, a WindowsIISServerConfig configuração na Galeria do PowerShell tem as linhas neste exemplo.

configuration WindowsIISServerConfig
{

Import-DscResource -ModuleName @{ModuleName = 'xWebAdministration';ModuleVersion = '1.19.0.0'}
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

A configuração requer que você tenha o módulo xWebAdministration versão 1.19.0.0 e o módulo PSDesiredStateConfiguration.

Testar conteúdo na configuração da máquina do Azure

Para avaliar se você pode usar seu conteúdo da Configuração do Estado de Automação do Azure com a configuração da máquina, siga o tutorial passo a passo na página Como criar artefatos de pacote de configuração de máquina personalizados.

Quando você chegar à etapa Criar uma configuração, o script de configuração que gera um arquivo MOF deve ser um dos scripts exportados da Configuração do Estado de Automação do Azure. Você deve ter os módulos necessários do PowerShell instalados em seu ambiente antes de poder compilar a configuração em um arquivo MOF e criar um pacote de configuração de máquina.

E se um módulo não funcionar com a configuração da máquina?

Alguns módulos podem ter problemas de compatibilidade com a configuração da máquina. Os problemas mais comuns estão relacionados ao .NET framework vs .NET core. Informações técnicas detalhadas estão disponíveis na página Diferenças entre o Windows PowerShell 5.1 e o PowerShell 7.x.

Uma opção para resolver problemas de compatibilidade é executar comandos no Windows PowerShell de dentro de um módulo importado no PowerShell 7, executando powershell.exeo . Você pode revisar um módulo de exemplo que usa essa técnica no repositório Azure-Policy onde ele é usado para auditar o estado da Configuração do DSC do Windows.

O exemplo também ilustra uma pequena prova de conceito.

# example function that could be loaded from module
function New-TaskResolvedInPWSH7 {
    # runs the fictitious command 'Get-myNotCompatibleCommand' in Windows PowerShell
    $compatObject = & powershell.exe -NoProfile -NonInteractive -Command {
        Get-myNotCompatibleCommand
    }
    # resulting object can be used in PowerShell 7
    return $compatObject
}

Preciso adicionar a propriedade Reasons a Get-TargetResource em todos os módulos que migro?

A implementação da propriedade Reasons fornece uma experiência melhor ao exibir os resultados de uma atribuição de configuração no portal do Azure. Se o Get método em um módulo não incluir Reasons, a Get saída genérica será retornada com detalhes das propriedades retornadas pelo método. Portanto, é opcional para migração.

Computadores

Depois de concluir o teste do conteúdo da Configuração do Estado de Automação do Azure na configuração da máquina, desenvolva um plano para migrar máquinas.

A Configuração do Estado de Automação do Azure está disponível para máquinas virtuais no Azure e máquinas híbridas localizadas fora do Azure. Você deve planejar cada um desses cenários usando etapas diferentes.

VMs do Azure

As máquinas virtuais do Azure já têm um recurso no Azure, o que significa que estão prontas para atribuições de configuração de máquina que as associam a uma configuração. As tarefas de alto nível para migrar máquinas virtuais do Azure são removê-las da Configuração do Estado de Automação do Azure e, em seguida, atribuir configurações usando a configuração da máquina.

Para remover uma máquina da Configuração do Estado de Automação do Azure, siga as etapas na página Como remover uma configuração e um nó da Configuração do Estado de Automação.

Para atribuir configurações usando a configuração da máquina, siga as etapas nos Inícios Rápidos da Política do Azure, como Guia de início rápido: criar uma atribuição de política para identificar recursos não compatíveis. Na etapa 6, ao selecionar uma definição de política, escolha a definição que aplica uma configuração migrada da Configuração do Estado de Automação do Azure.

Máquinas híbridas

As máquinas fora do Azure podem ser registadas na Configuração do Estado de Automação do Azure, mas não têm um recurso de máquina no Azure. O serviço Gerenciador de Configuração Local (LCM) dentro da máquina lida com a conexão com a Automação do Azure. O registro do nó é gerenciado como um recurso no tipo de provedor de Automação do Azure.

Antes de remover uma máquina da Configuração do Estado de Automação do Azure, integre cada nó como um servidor habilitado para Azure Arc. A integração ao Azure Arc cria um recurso de máquina no Azure para que a Política do Azure possa gerenciar a máquina. A máquina pode ser integrada ao Azure Arc a qualquer momento, mas você pode usar a Configuração de Estado de Automação do Azure para automatizar o processo.

Resolver problemas ao exportar conteúdos

Detalhes sobre problemas conhecidos são fornecidos nesta seção.

A exportação de configurações resulta no caractere "\" no nome do arquivo

Ao usar o PowerShell no macOS e Linux, você pode ter problemas para lidar com os nomes de arquivo enviados pelo Export-AzAutomationDSCConfiguration.

Como solução alternativa, um módulo foi publicado na Galeria do PowerShell chamado AADSCConfigContent. O módulo tem apenas um comando, que exporta o conteúdo de uma configuração armazenada na Automação do Azure fazendo uma solicitação REST para o serviço.

Próximos passos

  • Desenvolva um pacote de configuração de máquina personalizado.
  • Use o módulo GuestConfiguration para criar uma definição de Política do Azure para gerenciamento em escala do seu ambiente.
  • [Atribua sua definição de política personalizada] [20] Utilizando o portal do Azure.
  • Saiba como visualizar [detalhes de conformidade para configuração de máquina][21] atribuições de política.