Kompilowanie konfiguracji DSC w usłudze Azure Automation State Configuration

Uwaga

Przed włączeniem usługi Automation State Configuration chcielibyśmy wiedzieć, że nowsza wersja rozszerzenia DSC jest teraz ogólnie dostępna, zarządzana przez funkcję usługi Azure Policy o nazwie konfiguracja gościa. Usługa konfiguracji gościa łączy funkcje rozszerzenia DSC, usługi Azure Automation State Configuration i najczęściej żądanych funkcji opinii klientów. Konfiguracja gościa obejmuje również obsługę maszyn hybrydowych za pośrednictwem serwerów z obsługą usługi Arc.

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

  • Usługa kompilacji usługi Azure State Configuration

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

    • Wywoływanie z programu Windows PowerShell na lokalnej stacji roboczej lub usłudze kompilacji
    • Integracja z potokiem testowania programistycznego
    • Podaj wartości parametrów złożonych
    • Praca z danymi węzła i węzłami na dużą skalę
    • Znaczna poprawa wydajności

Możesz również użyć szablonów usługi Azure Resource Manager z rozszerzeniem Azure Desired State Configuration (DSC), aby wypchnąć konfiguracje do maszyn wirtualnych platformy Azure. Rozszerzenie DSC platformy Azure używa platformy Agent maszyny wirtualnej platformy Azure do dostarczania, wprowadzania i raportowania konfiguracji DSC działających na maszynach wirtualnych platformy Azure. Aby uzyskać szczegółowe informacje na temat kompilacji przy użyciu szablonów usługi Azure Resource Manager, zobacz Temat Desired State Configuration extension with Azure Resource Manager templates (Rozszerzenie Desired State Configuration z szablonami usługi Azure Resource Manager).

Kompilowanie konfiguracji DSC w usłudze Azure State Configuration

Portal

  1. Na koncie usługi Automation kliknij pozycję Konfiguracja stanu (DSC).
  2. Kliknij kartę Konfiguracje , a następnie kliknij nazwę konfiguracji do skompilowania.
  3. Kliknij 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 blok Kompiluj konfigurację, 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 usługi Azure Automation State Configuration.

Azure PowerShell

Aby rozpocząć kompilowanie za pomocą programu Windows PowerShell, możesz użyć polecenia Start-AzAutomationDscCompilationJob . 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). Poniższy przykład rozpoczyna kompilację konfiguracji SampleConfig, czeka na zakończenie, a następnie wyświetla swoje 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 parametru w konfiguracjach DSC, w tym typy parametrów i właściwości, działa tak samo jak w elementach Runbook usługi Azure Automation. Zobacz Uruchamianie elementu runbook w usłudze Azure Automation , aby dowiedzieć się więcej na temat parametrów elementu Runbook.

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

Konfiguracje DSC, które używają podstawowych parametrów, można skompilować w portalu konfiguracji stanu usługi Azure Automation lub za pomocą programu Azure PowerShell.

Portal

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

Configuration compile parameters

Azure PowerShell

Program PowerShell wymaga parametrów w tabeli skrótu, 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 usłudze Azure Automation

Funkcja Zasoby złożone umożliwia używanie konfiguracji DSC jako zagnieżdżonych zasobów wewnątrz 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 usługi Azure Automation wszystkie zasoby DSC, na których polegają złożone zasoby. Dodawanie zasobu złożonego DSC nie różni się od dodawania modułu programu PowerShell do usługi Azure Automation. Ten proces jest udokumentowany w artykule Manage Modules in Azure Automation (Zarządzanie modułami w usłudze Azure Automation).

Zarządzanie konfiguracjąData podczas kompilowania konfiguracji w usłudze 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 wartości "What" od "Where" w programie PowerShell DSC.

Uwaga

Podczas kompilowania w usłudze Azure Automation State Configuration można użyć programu ConfigurationData Azure PowerShell, ale nie w witrynie Azure Portal.

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

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 usłudze Azure Automation podczas kompilacji

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

Zasoby poświadczeń

Konfiguracje DSC w usłudze Azure Automation mogą odwoływać się do zasobów poświadczeń usługi Automation przy użyciu Get-AutomationPSCredential polecenia cmdlet . Jeśli konfiguracja ma parametr określający PSCredential obiekt, użyj polecenia Get-AutomationPSCredential , przekazując nazwę ciągu zasobu poświadczeń usługi Azure Automation do polecenia cmdlet w celu pobrania poświadczeń. Następnie należy użyć tego obiektu dla parametru wymagającego PSCredential obiektu. W tle zasób poświadczeń usługi Azure Automation o tej nazwie jest pobierany i przekazywany do konfiguracji. W poniższym przykładzie pokazano ten scenariusz w działaniu.

Zachowanie bezpieczeństwa poświadczeń w konfiguracjach węzłów (dokumenty konfiguracji MOF) wymaga szyfrowania poświadczeń w pliku MOF konfiguracji węzła. Obecnie musisz przyznać rozszerzenie DSC programu PowerShell uprawnienia do danych wyjściowych w postaci zwykłego tekstu podczas generowania mof konfiguracji węzła. Rozszerzenie DSC programu PowerShell nie jest świadome, że usługa Azure Automation szyfruje cały plik MOF po jego wygenerowaniu za pomocą zadania kompilacji.

Możesz poinformować rozszerzenie DSC programu PowerShell, że jest w porządku, aby poświadczenia mogły być wyprowadzane w postaci zwykłego tekstu w wygenerowanych plikach MOFs konfiguracji węzła przy użyciu danych konfiguracji. Należy przekazać PSDscAllowPlainTextPassword = $true dla ConfigurationData 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 korzystającą z zasobu poświadczeń usługi Automation.

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 ściągania 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 The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. o błędzie Możesz bezpiecznie zignorować ten komunikat.

Kompilowanie konfiguracji DSC w programie Windows PowerShell

Proces kompilowania konfiguracji DSC w programie Windows PowerShell jest zawarty w dokumentacji DSC programu PowerShell Zapisywanie, kompilowanie i stosowanie konfiguracji. Ten proces można wykonać z poziomu stacji roboczej dewelopera lub usługi kompilacji, takiej jak Azure DevOps. Następnie możesz 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 lokalnie konfigurację podpisanego węzła w 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 (pliki MOF), które zostały skompilowane poza platformą 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ć usłudze 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 witrynie Azure Portal

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

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

  3. Na stronie Importowanie kliknij ikonę folderu obok pola Plik konfiguracji węzła, aby wyszukać plik MOF konfiguracji węzła na komputerze lokalnym.

    Browse for local file

  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. Kliknij przycisk OK.

Importowanie konfiguracji węzła za pomocą programu Azure PowerShell

Aby zaimportować konfigurację węzła do konta usługi Automation, możesz użyć polecenia cmdlet Import-AzAutomationDscNodeConfiguration .

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

Następne kroki