Kompilowanie konfiguracji DSC w Azure Automation State Configuration

Uwaga

Azure Automation State Configuration zostanie wycofana 30 września 2027 r., przejdź na Azure Machine Configuration do tego czasu. Aby uzyskać więcej informacji, zobacz ogłoszenie blog. Usługa Azure Machine Configuration łączy funkcje rozszerzenia DSC, Azure Automation State Configuration i najczęściej żądane funkcje opinii klientów. Azure Machine Configuration obejmuje również obsługę maszyn hybrydowych za pośrednictwem serwerów z obsługą Arc.

Ważne

Linki nawigacji Dodaj, Redaguj i Galeria zostaną usunięte z portalu 31 marca 2025 r.

Uwaga

Azure Automation DSC dla systemu Linux został wycofany 30 września 2023 r. Aby uzyskać więcej informacji, zobacz ogłoszenie.

Konfiguracje Desired State Configuration (DSC) można skompilować w Azure Automation State Configuration w następujący sposób:

  • usługa kompilacji Azure State Configuration

    • Metoda dla początkujących z interaktywnym interfejsem użytkownika
    • Łatwe śledzenie stanu zadania
  • Windows PowerShell

    • Wywoływanie Windows PowerShell na komputerze lokalnym lub serwisie kompilacji
    • Integracja z potokiem testowania programistycznego
    • Podaj wartości parametrów złożonych
    • Obsługa danych węzłowych i nienode'owych na dużą skalę
    • Znaczna poprawa wydajności

Można również użyć szablonów Azure Resource Manager z rozszerzeniem Azure Desired State Configuration (DSC), aby przesłać konfiguracje do maszyn wirtualnych Azure. Rozszerzenie Azure DSC używa platformy agenta maszyny wirtualnej Azure do dostarczania, wprowadzania i raportowania konfiguracji DSC działających na maszynach wirtualnych Azure. Aby uzyskać szczegółowe informacje o kompilacji przy użyciu szablonów Azure Resource Manager, zobacz rozszerzenie Desired State Configuration z szablonami Azure Resource Manager.

Kompilowanie konfiguracji DSC w Azure State Configuration

Portal

  1. Na koncie usługi Automation wybierz pozycję Konfiguracja stanu (DSC).
  2. Wybierz kartę Konfiguracje , a następnie wybierz nazwę konfiguracji do skompilowania.
  3. Wybierz pozycję Kompiluj.
  4. Jeśli konfiguracja nie ma parametrów, zostanie wyświetlony monit o potwierdzenie, czy chcesz go skompilować. Jeśli konfiguracja ma parametry, zostanie otwarty panel Konfiguracja kompilacji, aby można było podać wartości parametrów.
  5. Zostanie otwarta strona Zadanie kompilacji, aby można było śledzić stan zadania kompilacji. Za pomocą tej strony można również śledzić konfiguracje węzłów (dokumenty konfiguracji MOF) umieszczone na serwerze ściągania Azure Automation State Configuration.

Azure PowerShell

Możesz użyć Start-AzAutomationDscCompilationJob, aby rozpocząć kompilowanie przy użyciu programu Windows PowerShell. Poniższy przykładowy kod rozpoczyna kompilację konfiguracji DSC o nazwie SampleConfig.

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

Start-AzAutomationDscCompilationJob Zwraca obiekt zadania kompilacji, którego można użyć do śledzenia stanu zadania. Następnie można użyć tego obiektu zadania kompilacji z poleceniem Get-AzAutomationDscCompilationJob w celu określenia stanu zadania kompilacji oraz polecenia Get-AzAutomationDscCompilationJobOutput , aby wyświetlić jego strumienie (dane wyjściowe). Fragment kodu poniżej rozpoczyna kompilację konfiguracji SampleConfig, czeka na jej zakończenie, a następnie wyświetla strumienie.

$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

Deklarowanie podstawowych parametrów

Deklaracja parametrów w konfiguracjach DSC, w tym typy parametrów i właściwości, działa tak samo jak w runbookach Azure Automation. Aby dowiedzieć się więcej na temat parametrów elementu Runbook, zobacz Starting a runbook in Azure Automation (Uruchamianie elementu Runbook w Azure Automation.

W poniższym przykładzie użyto parametrów FeatureName i IsPresent do określenia wartości właściwości w konfiguracji węzła ParametersExample.sample wygenerowane podczas kompilacji.

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

Można skompilować konfiguracje DSC, które używają podstawowych parametrów, w portalu Azure Automation State Configuration lub za pomocą Azure PowerShell.

Portal

W portalu można wprowadzić wartości parametrów po kliknięciu pozycji Kompiluj.

Parametry kompilacji konfiguracji

Azure PowerShell

Program PowerShell wymaga parametrów w tabeli mieszającej, gdzie klucz odpowiada nazwie parametru, a wartość jest równa wartości parametru.

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

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

Aby uzyskać informacje na temat przekazywania PSCredential obiektów jako parametrów, zobacz Zasoby poświadczeń.

Kompilowanie konfiguracji zawierających zasoby złożone w Azure Automation

Funkcja Złożone zasoby pozwala na używanie konfiguracji DSC jako zagnieżdżonych zasobów w ramach konfiguracji. Ta funkcja umożliwia stosowanie wielu konfiguracji do jednego zasobu. Zobacz Zasoby złożone: używanie konfiguracji DSC jako zasobu , aby dowiedzieć się więcej o zasobach złożonych.

Uwaga

Aby konfiguracje zawierające zasoby złożone zostały poprawnie skompilowane, należy najpierw zaimportować do Azure Automation wszelkie zasoby DSC, na których te zasoby złożone polegają. Dodawanie zasobu złożonego DSC nie różni się od dodawania modułu programu PowerShell do Azure Automation. Ten proces jest udokumentowany w Zarządzanie modułami w Azure Automation.

Zarządzanie danymi konfiguracyjnymi podczas kompilowania konfiguracji w Azure Automation

ConfigurationData jest wbudowanym parametrem DSC, który umożliwia oddzielenie konfiguracji strukturalnej od dowolnej konfiguracji specyficznej dla środowiska podczas korzystania z rozszerzenia DSC programu PowerShell. Aby uzyskać więcej informacji, zobacz Oddzielanie „Co” od „Gdzie” w środowisku PowerShell DSC.

Uwaga

Podczas kompilowania w Azure Automation State Configuration można użyć ConfigurationData w Azure PowerShell, ale nie w portalu Azure.

W poniższym przykładzie konfiguracja DSC wykorzystuje ConfigurationData za pośrednictwem słów kluczowych $ConfigurationData i $AllNodes. W tym przykładzie potrzebny jest również moduł xWebAdministration.

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

Poprzednią konfigurację DSC można skompilować przy użyciu programu Windows PowerShell. Poniższy skrypt dodaje dwie konfiguracje węzłów do usługi ściągania Azure Automation State Configuration: ConfigurationDataSample.MyVM1 i 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

Praca z elementami zawartości w Azure Automation podczas kompilacji

Odwołania do zasobów są takie same zarówno w Azure Automation State Configuration, jak i w elementach Runbook. Aby uzyskać więcej informacji, zobacz następujące artykuły:

Zasoby poświadczeń

Jeśli konfiguracja ma parametr określający obiekt PSCredential, użyj Get-AutomationPSCredential, przekazując nazwę obiektu poświadczeń Azure Automation do cmdlet w celu pobrania poświadczeń. Azure Automation przekazuje poświadczenia do konfiguracji.

Aby zapewnić bezpieczeństwo poświadczeń w konfiguracjach węzłów, zaszyfruj poświadczenia w pliku MOF konfiguracji węzła. Musisz przyznać PowerShell DSC uprawnienia do wyprowadzania danych jako tekst niezaszyfrowany podczas generowania MOF konfiguracji węzła. Azure Automation szyfruje cały plik MOF po jego wygenerowaniu przez zadanie kompilacji, a PowerShell DSC nie ma świadomości tego faktu.

Możesz poinformować PowerShell DSC, że poświadczenia mogą być wyprowadzane jako zwykły tekst w wygenerowanych plikach MOF konfiguracji węzła z użyciem danych konfiguracji. Należy przekazać PSDscAllowPlainTextPassword = $true przez ConfigurationData dla każdej nazwy bloku węzła, która jest wyświetlana w konfiguracji DSC i używa poświadczeń.

W poniższym przykładzie przedstawiono konfigurację DSC, która używa zasobu poświadczeń automatyzacji.

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

Poprzednią konfigurację DSC można skompilować przy użyciu programu PowerShell. Poniższy kod programu PowerShell dodaje dwie konfiguracje węzłów do serwera pobierania usługi Azure Automation State Configuration: CredentialSample.MyVM1 i CredentialSample.MyVM2.

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

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

Uwaga

Po zakończeniu kompilacji może zostać wyświetlony komunikat o błędzie The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Możesz bezpiecznie zignorować ten komunikat.

Kompilowanie konfiguracji DSC w programie Windows PowerShell

Proces kompilowania konfiguracji DSC w Windows PowerShell jest opisany w dokumentacji PowerShell DSC Write, Kompiluj i Zastosuj Konfigurację. Ten proces można wykonać na stacji roboczej dewelopera lub w usłudze kompilacji, takiej jak Azure DevOps. Następnie można zaimportować pliki MOF utworzone przez skompilowanie konfiguracji do usługi Azure State Configuration.

Kompilowanie w programie Windows PowerShell umożliwia również podpisywanie zawartości konfiguracji. Agent DSC weryfikuje podpisaną konfigurację węzła lokalnie na węźle zarządzanym. Weryfikacja zapewnia, że konfiguracja zastosowana do węzła pochodzi z autoryzowanego źródła.

Można również zaimportować konfiguracje węzłów, które zostały skompilowane poza Azure. Importowanie obejmuje kompilację ze stacji roboczej dewelopera lub usługi, takiej jak Azure DevOps. Takie podejście ma wiele zalet, w tym wydajność i niezawodność.

Uwaga

Plik konfiguracji węzła nie może być większy niż 1 MB, aby umożliwić Azure Automation importowanie go.

Aby uzyskać więcej informacji na temat podpisywania konfiguracji węzłów, zobacz Ulepszenia w programie WMF 5.1 — jak podpisać konfigurację i moduł.

Importowanie konfiguracji węzła w portalu Azure

  1. Na koncie usługi Automation wybierz pozycję Konfiguracja stanu (DSC) w obszarze Zarządzanie konfiguracją.

  2. Na stronie Konfiguracja stanu (DSC) wybierz kartę Konfiguracje , a następnie wybierz pozycję Dodaj.

  3. Na stronie Importu wybierz ikonę folderu obok Pliku konfiguracji węzła, aby wyszukać plik MOF konfiguracji węzła na komputerze lokalnym.

    Przeglądaj lokalny plik

  4. Wprowadź nazwę w polu Nazwa konfiguracji. Ta nazwa musi być zgodna z nazwą konfiguracji, z której została skompilowana konfiguracja węzła.

  5. Wybierz przycisk OK.

Importowanie konfiguracji węzła przy użyciu Azure PowerShell

Aby zaimportować konfigurację węzła do konta usługi Automation, użyj cmdletu Import-AzAutomationDscNodeConfiguration.

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

Następne kroki