Configurar computadores para um estado pretendido

Nota

Azure Automation State Configuration será descontinuado a 30 de setembro de 2027, por favor, transite para Configuração de Máquina do Azure até essa data. Para mais informações, consulte o anúncio do blog. O serviço Azure Configuração de Máquina combina funcionalidades da Extensão DSC, Azure Automation State Configuration e as funcionalidades mais frequentemente solicitadas pelo feedback dos clientes. Azure Configuração da Máquina inclui também suporte para máquinas híbridas através de servidores com suporte Arc.

Importante

Os links de navegação Adicionar, Redigir configuração e Galeria serão removidos do portal em 31 de março de 2025.

Atenção

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

Azure Automation State Configuration permite especificar configurações para os seus servidores e garantir que esses servidores estão no estado especificado ao longo do tempo.

  • Adicionar uma VM para ser gerida pelo Azure Automation DSC
  • Carregar uma configuração para o Azure Automation
  • Compilar uma configuração em uma configuração de nó
  • Atribuir uma configuração de nó a um nó gerenciado
  • Verificar o status de conformidade de um nó gerenciado

Para este tutorial, usamos uma configuração DSC simples que garante que o IIS esteja instalado na VM.

Pré-requisitos

Nota

O Windows Server 2008 e o Windows Server 2008 R2 chegaram ao Fim do Suporte (EOS). Para mais informações, veja, Fim do suporte para Windows Server 2008 e Windows Server 2008 R2 e Realize atualização no local para Windows Server 2016, 2019, 2022 ou 2025. Revise o seu uso e planeie as atualizações e migrações do sistema operativo em conformidade.

Suporte para configurações parciais

Azure Automation State Configuration suporta o uso de configurações parciais. Neste cenário, o DSC é configurado para gerir múltiplas configurações de forma independente, e cada configuração é retirada do Azure Automation. No entanto, apenas uma configuração pode ser atribuída a um nó por cada conta de automatização. Isso significa que, se você estiver usando duas configurações para um nó, precisará de duas contas de automação.

Para obter detalhes sobre como registrar uma configuração parcial de um serviço pull, consulte a documentação para configurações parciais.

Para obter mais informações sobre como as equipes podem trabalhar juntas para gerenciar servidores de forma colaborativa usando a configuração como código, consulte Compreendendo a função do DSC em um pipeline de CI/CD.

Iniciar sessão no Azure

Inicie sessão na sua subscrição Azure com o cmdlet Connect-AzAccount e siga as instruções no ecrã.

Connect-AzAccount

Crie e carregue uma configuração para o Azure Automation

Em um editor de texto, digite o seguinte e salve-o localmente como TestConfig.ps1.

configuration TestConfig {
   Node WebServer {
      WindowsFeature IIS {
         Ensure               = 'Present'
         Name                 = 'Web-Server'
         IncludeAllSubFeature = $true
      }
   }
}

Nota

Os nomes de configuração no Azure Automation devem ser limitados a no máximo 100 caracteres.

Em cenários mais avançados em que você precisa importar vários módulos que fornecem recursos DSC, certifique-se de que cada módulo tenha uma linha exclusiva Import-DscResource em sua configuração.

Chame o cmdlet Import-AzAutomationDscConfiguration para carregar a configuração em sua conta de automação.

$importAzAutomationDscConfigurationSplat = @{
    SourcePath = 'C:\DscConfigs\TestConfig.ps1'
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Published = $true
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat

Compilar uma configuração em uma configuração de nó

Uma configuração DSC deve ser compilada em uma configuração de nó antes de poder ser atribuída a um nó. Consulte Configurações DSC.

Chame o cmdlet Start-AzAutomationDscCompilationJob para compilar a configuração TestConfig numa configuração de nó denominada TestConfig.WebServer na sua conta de Automação.

$startAzAutomationDscCompilationJobSplat = @{
    ConfigurationName = 'TestConfig'
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
}
Start-AzAutomationDscCompilationJob @startAzAutomationDscCompilationJobSplat

Registar uma VM a ser gerida pelo State Configuration

Pode usar Azure Automation State Configuration para gerir VMs Azure (tanto Classic como Resource Manager), VMs on-premiss, máquinas Linux, VMs AWS e máquinas físicas on-premiss. Neste artigo, abordamos como registar apenas VMs do Azure Resource Manager. Para informações sobre o registo de outros tipos de máquinas, consulte Integração de máquinas para gestão pelo Azure Automation State Configuration.

Execute o cmdlet Register-AzAutomationDscNode para registar a sua VM com o Azure Automation State Configuration como um nó gerido.

$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat

Especificar definições do modo de configuração

Para registrar uma VM como um nó gerenciado e especificar propriedades de configuração, utilize o cmdlet Register-AzAutomationDscNode. Por exemplo, você pode especificar que o estado da máquina deve ser aplicado apenas uma vez, especificando ApplyOnly como o valor da ConfigurationMode propriedade. O State Configuration não tenta aplicar a configuração após a verificação inicial.

$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
    ConfigurationMode = 'ApplyOnly'
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat```

You can also specify how often DSC checks the configuration state by using the
`ConfigurationModeFrequencyMins` property. For more information about DSC configuration settings,
see [Configuring the Local Configuration Manager][05].

```powershell
# Run a DSC check every 60 minutes
$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
    ConfigurationModeFrequencyMins = 60
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat```

## Assign a node configuration to a managed node

Now we can assign the compiled node configuration to the VM we want to configure.

```powershell
# Get the ID of the DSC node
$getAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Name = 'DscVm'
}
$node = Get-AzAutomationDscNode @getAzAutomationDscNodeSplat

# Assign the node configuration to the DSC node
$setAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    NodeConfigurationName = 'TestConfig.WebServer'
    NodeId = $node.Id
}
Set-AzAutomationDscNode @setAzAutomationDscNodeSplat

Isso atribui a configuração do nó nomeado TestConfig.WebServer ao nó DscVmDSC registrado. Por predefinição, o nó DSC é verificado quanto à conformidade com a configuração do nó a cada 30 minutos. Para informações sobre como alterar o intervalo de verificação de conformidade, consulte Configurar o Local Configuration Manager.

Verificar o status de conformidade de um nó gerenciado

Você pode obter relatórios sobre o status de conformidade de um nó gerenciado usando o cmdlet Get-AzAutomationDscNodeReport .

# Get the ID of the DSC node
$getAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Name = 'DscVm'
}
$node = Get-AzAutomationDscNode @getAzAutomationDscNodeSplat

# Get an array of status reports for the DSC node
$getAzAutomationDscNodeReportSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    NodeId = $node.Id
}
$reports = Get-AzAutomationDscNodeReport @getAzAutomationDscNodeReportSplat

# Display the most recent report
$reports[0]

Próximos passos