Cara membuat artefak paket konfigurasi mesin kustom

Sebelum memulai, sebaiknya baca halaman gambaran umum untuk konfigurasi mesin.

Konfigurasi mesin menggunakan Desired State Configuration (DSC) saat mengaudit dan mengonfigurasi Windows dan Linux. Konfigurasi DSC menentukan kondisi tempat mesin dijalankan.

Penting

Paket kustom yang mengaudit status lingkungan dan menerapkan konfigurasi berada dalam status dukungan Generally Available (GA). Namun, batasan berikut berlaku:

Untuk menggunakan paket konfigurasi komputer yang menerapkan konfigurasi, ekstensi konfigurasi tamu Azure VM versi 1.26.24 atau yang lebih baru, atau agen Arc 1.10.0 atau yang lebih baru, diperlukan.

Modul GuestConfiguration hanya tersedia di Ubuntu 18 dan yang lebih baru. Namun, paket dan kebijakan yang dihasilkan oleh modul dapat digunakan pada distribusi dan versi Linux apa pun yang didukung di Azure atau Arc.

Paket pengujian di macOS tidak tersedia.

Jangan gunakan rahasia atau informasi rahasia dalam paket konten kustom.

Gunakan langkah-langkah berikut untuk membuat konfigurasi Anda sendiri guna mengelola status komputer Azure atau non-Azure.

Instal PowerShell 7 dan modul PowerShell yang diperlukan

Pertama, ikuti langkah-langkah dalam Cara menyiapkan lingkungan penulisan konfigurasi komputer. Langkah-langkah tersebut membantu Anda menginstal versi PowerShell yang diperlukan untuk OS Anda, modul GuestConfiguration , dan modul PSDesiredStateConfiguration .

Menulis konfigurasi

Sebelum Anda membuat paket konfigurasi, buat dan kompilasi konfigurasi DSC. Contoh konfigurasi tersedia untuk Windows dan Linux.

Penting

Saat mengkompilasi konfigurasi untuk Windows, gunakan PSDesiredStateConfiguration versi 2.0.7 (rilis stabil). Saat mengkompilasi konfigurasi untuk Linux, instal prarilis versi 3.0.0.

Contoh konfigurasi ini adalah untuk komputer Windows. Ini mengonfigurasi komputer untuk membuat MC_ENV_EXAMPLE variabel lingkungan dalam Process cakupan dan Machine . Nilai variabel diatur ke 'This was set by machine configuration'.

Configuration MyConfig {
    Import-DscResource -Name 'Environment' -ModuleName 'PSDscResources'
    Environment MachineConfigurationExample {
        Name   = 'MC_ENV_EXAMPLE'
        Value  = 'This was set by machine configuration'
        Ensure = 'Present'
        Target = @('Process', 'Machine')
    }
}

MyConfig

Dengan definisi yang disimpan dalam MyConfig.ps1 file skrip, Anda dapat menjalankan skrip untuk mengkompilasi konfigurasi.

. .\MyConfig.ps1
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:39 AM           1080 localhost.mof

Konfigurasi dikompilasi ke localhost.mof dalam file di MyConfig folder di direktori kerja saat ini. Ganti nama localhost.mof menjadi nama yang ingin Anda gunakan sebagai nama paket, seperti MyConfig.mof.

Rename-Item -Path .\MyConfig\localhost.mof -NewName MyConfig.mof -PassThru
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:40 AM           1080 MyConfig.mof

Catatan

Contoh ini menunjukkan cara menulis dan mengkompilasi konfigurasi untuk komputer Windows. Untuk Linux, Anda perlu membuat modul sumber daya DSC kustom menggunakan kelas PowerShell. Artikel Menulis sumber daya DSC kustom dengan kelas PowerShell menyertakan contoh lengkap sumber daya dan konfigurasi kustom, yang diuji dengan konfigurasi komputer.

Sisa artikel ini berlaku untuk konfigurasi yang ditentukan untuk komputer Linux dan Windows kecuali jika menyebutkan pertimbangan khusus platform.

Membuat artefak paket konfigurasi

Setelah MOF dikompilasi, file pendukung harus dikemas bersama-sama. Paket yang telah selesai digunakan oleh konfigurasi mesin untuk membuat definisi Azure Policy.

Cmdlet New-GuestConfigurationPackage membuat paket. Modul yang diperlukan oleh konfigurasi harus tersedia di $Env:PSModulePath untuk lingkungan pengembangan sehingga perintah dalam modul dapat menambahkannya ke paket.

Parameter cmdlet New-GuestConfigurationPackage saat membuat konten Windows:

  • Nama: nama paket konfigurasi mesin.
  • Configuration: Kompilasi jalur lengkap dokumen konfigurasi DSC.
  • Jalur: Jalur folder output. Parameter ini bersifat opsional. Jika tidak ditentukan, paket akan dibuat dalam direktori saat ini.
  • Jenis: (Audit, AuditandSet) Menentukan apakah konfigurasi hanya boleh mengaudit atau apakah konfigurasi harus mengubah status komputer jika berada di luar status yang diinginkan. Default adalah Audit.

Langkah ini tidak memerlukan elevasi. Parameter Force digunakan untuk menimpa paket yang ada, jika Anda menjalankan perintah lebih dari sekali.

Perintah berikut membuat artefak paket:

# Create a package that will only audit compliance
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'Audit'
    Force         = $true
}
New-GuestConfigurationPackage @params
# Create a package that will audit and apply the configuration (Set)
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'AuditAndSet'
    Force         = $true
}
New-GuestConfigurationPackage @params

Objek dikembalikan dengan Nama dan Jalur paket yang dibuat.

Name     Path
----     ----
MyConfig C:\dsc\MyConfig.zip

Konten yang diharapkan dari artefak konfigurasi mesin

Paket yang telah selesai digunakan oleh konfigurasi mesin untuk membuat definisi Azure Policy. Paket ini terdiri dari:

  • Konfigurasi DSC yang dikompilasi sebagai MOF
  • Folder modul
    • Modul GuestConfiguration
    • Modul DscNativeResources
    • Modul sumber daya DSC yang diperlukan oleh MOF
  • File metaconfig yang menyimpan paket type dan version

Cmdlet PowerShell membuat file paket .zip . Tidak diperlukan folder tingkat akar atau folder versi. Format paket harus berupa .zip file dan tidak boleh melebihi ukuran total 100 MB saat tidak dikompresi.

Anda dapat memperluas arsip untuk memeriksanya dengan menggunakan Expand-Archive cmdlet.

Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip

Anda bisa mendapatkan ukuran total paket yang tidak dikompresi dengan PowerShell.

Get-ChildItem -Recurse -Path .\MyConfigZip |
    Measure-Object -Sum Length |
    ForEach-Object -Process {
        $Size = [math]::Round(($_.Sum / 1MB), 2)
        "$Size MB"
    }

Memperluas konfigurasi mesin dengan alat pihak ketiga

Paket artefak untuk konfigurasi mesin dapat diperluas untuk menyertakan alat pihak ketiga. Perluasan konfigurasi mesin memerlukan pengembangan dua komponen.

  • Sumber daya Konfigurasi Status yang Diinginkan yang menangani semua aktivitas yang terkait dengan pengelolaan alat pihak ketiga
    • Instal
    • Gunakan
    • Konversi output
  • Konten dalam format yang benar untuk alat yang akan digunakan secara native

Sumber daya DSC memerlukan pengembangan kustom jika solusi komunitas belum ada. Solusi komunitas bisa ditemukan dengan mencari Galeri PowerShell untuk tag GuestConfiguration.

Catatan

Kemampuan ekstensi konfigurasi mesin adalah skenario "bawa lisensi Anda sendiri". Pastikan Anda telah memenuhi syarat dan ketentuan alat pihak ketiga mana pun sebelum digunakan.

Setelah sumber daya DSC diinstal di lingkungan pengembangan, gunakan parameter FilesToInclude untuk New-GuestConfigurationPackage guna menyertakan konten untuk platform pihak ketiga dalam artefak konten.

Langkah selanjutnya