Mengompilasi konfigurasi DSC dalam Azure Automation State Configuration

Catatan

Sebelum Anda mengaktifkan Konfigurasi Status Automation, kami ingin Anda mengetahui bahwa versi DSC yang lebih baru sekarang tersedia secara umum, dikelola oleh fitur Azure Policy bernama konfigurasi tamu. Layanan konfigurasi tamu menggabungkan fitur Ekstensi DSC, Konfigurasi Status Azure Automation, dan fitur yang paling sering diminta dari umpan balik pelanggan. Konfigurasi tamu juga mencakup dukungan komputer hibrid melalui server berkemampuan Arc.

Anda dapat mengompilasi konfigurasi Desired State Configuration (DSC) di Azure Automation State Configuration dengan cara berikut:

  • Layanan kompilasi Azure State Configuration

    • Metode pemula dengan antarmuka pengguna interaktif
    • Melacak status tugas dengan mudah
  • Windows PowerShell

    • Memanggil dari Windows PowerShell di stasiun kerja lokal atau membangun layanan
    • Terintegrasi dengan alur uji pengembangan
    • Menyediakan nilai parameter yang kompleks
    • Bekerja dengan data node dan non-node dalam skala besar
    • Peningkatan performa yang signifikan

Anda juga dapat menggunakan templat Azure Resource Manager dengan ekstensi Azure Desired State Configuration (DSC) untuk mendorong konfigurasi ke Azure VM Anda. Ekstensi Azure DSC menggunakan kerangka kerja Azure VM Agent untuk memberikan, memberlakukan, dan melaporkan konfigurasi DSC yang berjalan di Azure VM. Untuk detail kompilasi menggunakan templat Azure Resource Manager, lihat Ekstensi Desired State Configuration dengan templat Azure Resource Manager.

Mengompilasi konfigurasi DSC di Azure State Configuration

Portal

  1. Di akun Automation Anda, klik Konfigurasi Status (DSC).
  2. Klik pada tab Konfigurasi, lalu klik nama konfigurasi untuk mengompilasi.
  3. Klik Kompilasi.
  4. Jika konfigurasi tidak memiliki parameter, Anda akan diminta untuk mengonfirmasi apakah Anda ingin mengompilasinya. Jika konfigurasi memiliki parameter, bilah Kompilasi Konfigurasi terbuka sehingga Anda dapat memberikan nilai parameter.
  5. Halaman Pekerjaan Kompilasi terbuka sehingga Anda dapat melacak status pekerjaan kompilasi. Anda juga dapat menggunakan halaman ini untuk melacak konfigurasi node (dokumen konfigurasi MOF) yang ditempatkan di server tarik Azure Automation State Configuration.

Azure PowerShell

Anda dapat menggunakan Start-AzAutomationDscCompilationJob untuk mulai mengompilasi dengan Windows PowerShell. Contoh kode berikut memulai kompilasi konfigurasi DSC yang disebut SampleConfig.

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

Start-AzAutomationDscCompilationJob mengembalikan objek pekerjaan kompilasi yang dapat Anda gunakan untuk melacak status pekerjaan. Anda kemudian dapat menggunakan objek pekerjaan kompilasi ini dengan Get-AzAutomationDscCompilationJob untuk menentukan status pekerjaan kompilasi, dan Get-AzAutomationDscCompilationJobOutput untuk melihat alirannya (output). Sampel berikut memulai kompilasi konfigurasi SampleConfig, menunggu hingga selesai, lalu menampilkan alirannya.

$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

Mendeklarasikan parameter dasar

Deklarasi parameter dalam konfigurasi DSC, termasuk jenis parameter dan properti, berfungsi sama seperti dalam runbook Azure Automation. Lihat Memulai runbook di Azure Automation untuk mempelajari selengkapnya tentang parameter runbook.

Contoh berikut menggunakan FeatureName dan parameter IsPresent untuk menentukan nilai properti dalam konfigurasi node ParametersExample.sample yang dihasilkan selama kompilasi.

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

Anda dapat mengompilasi konfigurasi DSC yang menggunakan parameter dasar di portal Microsoft Azure Automation State Configuration atau dengan Azure PowerShell.

Portal

Di portal, Anda dapat memasukkan nilai parameter setelah mengeklik Kompilasi.

Configuration compile parameters

Azure PowerShell

PowerShell memerlukan parameter dalam hashtable tempat key cocok dengan nama parameter dan nilainya sama dengan nilai parameter.

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

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

Untuk informasi tentang memberikan objek PSCredential sebagai parameter, lihat Aset kredensial.

Mengompilasi konfigurasi yang berisi sumber daya komposit di Azure Automation

Fitur Sumber Daya Komposit memungkinkan Anda menggunakan konfigurasi DSC sebagai sumber daya berlapis di dalam konfigurasi. Fitur ini memungkinkan penerapan beberapa konfigurasi ke satu sumber daya. Lihat Sumber daya komposit: Menggunakan konfigurasi DSC sebagai sumber daya untuk mempelajari selengkapnya tentang sumber daya komposit.

Catatan

Agar konfigurasi yang berisi sumber daya komposit dikompilasi dengan benar, Anda harus terlebih dahulu mengimpor ke Azure Automation sumber daya DSC apa pun yang diandalkan komposit. Menambahkan sumber daya komposit DSC tidak berbeda dengan menambahkan modul PowerShell apa pun ke Azure Automation. Proses ini didokumentasikan dalam Mengelola Modul di Azure Automation.

Mengelola ConfigurationData saat mengompilasi konfigurasi di Azure Automation

ConfigurationData adalah parameter DSC bawaan yang memungkinkan Anda memisahkan konfigurasi struktural dari konfigurasi khusus lingkungan saat menggunakan PowerShell DSC. Untuk informasi selengkapnya, lihat Memisahkan "Apa" dari "Di mana" di PowerShell DSC.

Catatan

Saat mengompilasi di Azure Automation State Configuration, Anda dapat menggunakan ConfigurationData di Azure PowerShell tetapi tidak di portal Microsoft Azure.

Contoh konfigurasi DSC berikut menggunakan ConfigurationData melalui $ConfigurationData dan kata kunci $AllNodes. Anda juga memerlukan modul xWebAdministration untuk contoh ini.

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

Anda dapat mengompilasi konfigurasi DSC sebelumnya dengan Windows PowerShell. Skrip berikut menambahkan dua konfigurasi node ke layanan tarik Azure Automation State Configuration: ConfigurationDataSample.MyVM1 dan 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

Bekerja dengan aset di Azure Automation selama kompilasi

Referensi aset di Azure Automation State Configuration dan runbook sama. Untuk mengetahui informasi selengkapnya, lihat tautan berikut:

Aset kredensial

Konfigurasi DSC di Azure Automation dapat mereferensikan aset kredensial Automation menggunakan cmdlet Get-AutomationPSCredential. Jika konfigurasi memiliki parameter yang menentukan objek PSCredential, gunakan Get-AutomationPSCredential dengan meneruskan nama string aset kredensial Azure Automation ke cmdlet untuk mengambil kredensial. Kemudian, manfaatkan objek tersebut untuk parameter yang membutuhkan objek PSCredential. Di balik layar, aset kredensial Azure Automation dengan nama tersebut diambil dan diteruskan ke konfigurasi. Contoh di bawah ini menunjukkan skenario ini dalam tindakan.

Menjaga kredensial tetap aman dalam konfigurasi node (dokumen konfigurasi MOF) memerlukan enkripsi kredensial dalam konfigurasi node file MOF. Saat ini Anda harus memberi PowerShell izin DSC untuk mengeluarkan kredensial dalam teks biasa selama konfigurasi node MOF generasi. PowerShell DSC tidak mengetahui bahwa Azure Automation mengenkripsi seluruh file MOF setelah pembuatannya melalui pekerjaan kompilasi.

Anda dapat memberi tahu PowerShell DSC bahwa output kredensial dapat berupa teks biasa dalam MOF konfigurasi node yang dihasilkan menggunakan Data konfigurasi. Anda harus meneruskan PSDscAllowPlainTextPassword = $true via ConfigurationData untuk setiap nama blok node yang muncul di konfigurasi DSC dan menggunakan kredensial.

Contoh berikut menunjukkan konfigurasi DSC yang menggunakan aset kredensial 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
        }
    }
}

Anda dapat mengompilasi konfigurasi DSC sebelumnya dengan PowerShell. Kode PowerShell berikut menambahkan dua konfigurasi node ke server tarik Azure Automation State Configuration: CredentialSample.MyVM1 dan CredentialSample.MyVM2.

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

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

Catatan

Ketika kompilasi selesai, Anda mungkin menerima pesan kesalahan The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Anda dapat mengabaikan pesan ini sepenuhnya.

Mengompilasi konfigurasi DSC Anda di Windows PowerShell

Proses untuk mengompilasi konfigurasi DSC di Windows PowerShell disertakan dalam dokumentasi PowerShell DSC Menulis, Mengompilasi, dan Menerapkan Konfigurasi. Anda dapat menjalankan proses ini dari stasiun kerja developer atau dalam layanan build, seperti Azure DevOps. Anda kemudian dapat mengimpor file MOF yang dihasilkan dengan mengompilasi konfigurasi ke dalam layanan Konfigurasi Status Azure.

Mengompilasi di Windows PowerShell juga menyediakan opsi untuk menandatangani konten konfigurasi. Agen DSC memverifikasi konfigurasi node yang ditandatangani secara lokal pada node terkelola. Verifikasi memastikan bahwa konfigurasi yang diterapkan pada node berasal dari sumber resmi.

Anda juga dapat mengimpor konfigurasi node (file MOF) yang telah dikompilasi di luar Azure. Impor mencakup kompilasi dari stasiun kerja developer atau dalam layanan seperti Azure DevOps. Pendekatan ini memiliki beberapa keuntungan, termasuk performa dan keandalan.

Catatan

File konfigurasi node harus tidak lebih besar dari 1 MB untuk memungkinkan Azure Automation mengimpornya.

Untuk informasi selengkapnya tentang penandatanganan konfigurasi node, lihat Peningkatan di WMF 5.1 - Cara menandatangani konfigurasi dan modul.

Mengimpor konfigurasi node di portal Microsoft Azure

  1. Dari akun Automation Anda, pilih Konfigurasi status (DSC) di Manajemen Konfigurasi.

  2. Pada halaman konfigurasi status (DSC), klik tab Konfigurasi, lalu klik Tambahkan.

  3. Pada halaman Impor, klik ikon folder di samping bidang File Konfigurasi Node untuk menelusuri file MOF konfigurasi node di komputer lokal Anda.

    Browse for local file

  4. Masukkan nama di bidang Nama Konfigurasi. Nama ini harus cocok dengan nama konfigurasi tempat asal konfigurasi node dikompilasi.

  5. Klik OK.

Mengimpor konfigurasi node dengan Azure PowerShell

Anda dapat menggunakan cmdlet Import-AzAutomationDscNodeConfiguration untuk mengimpor konfigurasi node ke akun Automation Anda.

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

Langkah berikutnya