Dela via


Konfigurera datorer till ett önskat tillstånd

Kommentar

Azure Automation State Configuration tas ur bruk den 30 september 2027. Övergå till Azure Machine Configuration senast det datumet. Mer information finns i blogginlägget. Azure Machine Configuration-tjänsten kombinerar funktioner i DSC-tillägget, Azure Automation State Configuration och de vanligaste funktionerna från kundfeedback. Azure Machine Configuration innehåller även stöd för hybriddatorer via Arc-aktiverade servrar.

Varning

Azure Automation DSC för Linux har dragits tillbaka den 30 september 2023. Mer information finns i meddelandet.

Med Azure Automation State Configuration kan du ange konfigurationer för dina servrar och se till att servrarna är i det angivna tillståndet över tid.

  • Registrera en virtuell dator som ska hanteras av Azure Automation DSC
  • Ladda upp en konfiguration till Azure Automation
  • Kompilera en konfiguration till en nodkonfiguration
  • Tilldela en nodkonfiguration till en hanterad nod
  • Kontrollera efterlevnadsstatusen för en hanterad nod

I den här självstudien använder vi en enkel DSC-konfiguration som säkerställer att IIS är installerat på den virtuella datorn.

Förutsättningar

  • Ett Azure Automation-konto. Mer information om ett Automation-konto och dess krav finns i Översikt över Automation-kontoautentisering.
  • En virtuell Azure Resource Manager-dator (inte klassisk) som kör Windows Server 2008 R2 eller senare. Anvisningar om hur du skapar en virtuell dator finns i Skapa din första virtuella Windows-dator i Azure Portal.
  • Azure PowerShell-modul version 3.6 eller senare. Kör Get-Module -ListAvailable Az för att hitta versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul).
  • Kunskaper om DSC (Desired State Configuration). Information om DSC finns i Översikt över önskad tillståndskonfiguration i Windows PowerShell.

Stöd för partiella konfigurationer

Azure Automation State Configuration stöder användning av partiella konfigurationer. I det här scenariot är DSC konfigurerat för att hantera flera konfigurationer oberoende av varandra och varje konfiguration hämtas från Azure Automation. Det går dock bara att tilldela en konfiguration till en nod per automationskonto. Det innebär att om du använder två konfigurationer för en nod behöver du två Automation-konton.

Mer information om hur du registrerar en partiell konfiguration från en pull-tjänst finns i dokumentationen för partiella konfigurationer.

Mer information om hur team kan arbeta tillsammans för att gemensamt hantera servrar med konfiguration som kod finns i Förstå DSC:s roll i en CI/CD-pipeline.

Logga in på Azure

Logga in på din Azure-prenumeration med cmdleten Connect-AzAccount och följ anvisningarna på skärmen.

Connect-AzAccount

Skapa och ladda upp en konfiguration till Azure Automation

I en textredigerare skriver du följande och sparar det lokalt som TestConfig.ps1.

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

Kommentar

Konfigurationsnamn i Azure Automation får begränsas till högst 100 tecken.

I mer avancerade scenarier där du behöver flera moduler som ska importeras som tillhandahåller DSC-resurser kontrollerar du att varje modul har en unik Import-DscResource rad i konfigurationen.

Anropa cmdleten Import-AzAutomationDscConfiguration för att ladda upp konfigurationen till ditt Automation-konto.

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

Kompilera en konfiguration till en nodkonfiguration

En DSC-konfiguration måste kompileras till en nodkonfiguration innan den kan tilldelas till en nod. Se DSC-konfigurationer.

Anropa cmdleten Start-AzAutomationDscCompilationJob för att kompilera konfigurationen TestConfig till en nodkonfiguration med namnet TestConfig.WebServer i ditt Automation-konto.

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

Registrera en virtuell dator som ska hanteras av tillståndskonfiguration

Du kan använda Azure Automation State Configuration för att hantera virtuella Azure-datorer (både klassiska datorer och Resource Manager), lokala virtuella datorer, Linux-datorer, virtuella AWS-datorer och lokala fysiska datorer. I den här artikeln går vi igenom hur du endast registrerar virtuella Azure Resource Manager-datorer. Information om hur du registrerar andra typer av datorer finns i Registrera datorer för hantering av Azure Automation State Configuration.

Anropa cmdleten Register-AzAutomationDscNode för att registrera den virtuella datorn med Azure Automation State Configuration som en hanterad nod.

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

Ange inställningar för konfigurationsläge

Använd cmdleten Register-AzAutomationDscNode för att registrera en virtuell dator som en hanterad nod och ange konfigurationsegenskaper. Du kan till exempel ange att datorns tillstånd endast ska tillämpas en gång genom att ApplyOnly ange som värdet för ConfigurationMode egenskapen. Tillståndskonfigurationen försöker inte tillämpa konfigurationen efter den första kontrollen.

$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

Detta tilldelar nodkonfigurationen med namnet TestConfig.WebServer till den registrerade DSC-noden DscVm. Som standard kontrolleras DSC-noden efter kompatibilitet med nodkonfigurationen var 30:e minut. Information om hur du ändrar efterlevnadskontrollintervallet finns i Konfigurera den lokala konfigurationshanteraren.

Kontrollera efterlevnadsstatusen för en hanterad nod

Du kan hämta rapporter om efterlevnadsstatus för en hanterad nod med hjälp av cmdleten 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]

Nästa steg