Perencanaan migrasi konfigurasi Azure Automation ke konfigurasi mesin

Konfigurasi mesin adalah implementasi fungsionalitas terbaru yang telah disediakan oleh Azure Automation State Configuration (juga dikenal sebagai Azure Automation Desired State Configuration, atau AADSC). Jika memungkinkan, Anda harus merencanakan untuk memindahkan konten dan mesin Anda ke layanan baru. Artikel ini memberikan panduan tentang pengembangan strategi migrasi dari Azure Automation ke konfigurasi mesin.

Fitur baru dalam permintaan pelanggan alamat konfigurasi komputer:

  • Peningkatan batas ukuran untuk konfigurasi menjadi 100 MB
  • Pelaporan lanjutan melalui Azure Resource Graph termasuk ID dan status sumber daya
  • Mengelola beberapa konfigurasi untuk mesin yang sama
  • Ketika mesin menyimpang dari keadaan yang diinginkan, Anda mengontrol kapan remediasi terjadi
  • Linux dan Windows keduanya mengonsumsi sumber daya DSC berbasis PowerShell

Sebelum membuat definisi kebijakan kustom, Anda sebaiknya membaca informasi gambaran umum konseptual di halaman Konfigurasi mesin Azure Policy.

Memahami tentang migrasi

Pendekatan terbaik untuk migrasi adalah menyebarkan ulang konten terlebih dahulu, dan kemudian memigrasikan mesin. Bagian ini menguraikan langkah-langkah yang diharapkan untuk migrasi.

  1. Mengekspor konfigurasi dari Azure Automation
  2. Menemukan persyaratan modul dan muat persyaratan tersebut di lingkungan Anda
  3. Mengompilasi konfigurasi
  4. Membuat dan menerbitkan paket konfigurasi mesin
  5. Paket konfigurasi mesin uji
  6. Memasang mesin hybrid ke Azure Arc
  7. Membatalkan pendaftaran dari Azure Automation State Configuration
  8. Menetapkan konfigurasi ke server menggunakan konfigurasi mesin

Konfigurasi mesin menggunakan DSC versi 3 dengan PowerShell versi 7. DSC versi 3 dapat berdampingan dengan DSC versi lama di Windows dan Linux. Implementasinya terpisah. Namun, tidak ada deteksi konflik.

Konfigurasi mesin tidak memerlukan modul penerbitan atau konfigurasi ke layanan, atau dikompilasi dalam layanan. Sebagai gantinya, Anda mengembangkan dan menguji konten menggunakan alat yang dibuat khusus dan menerbitkan konten di mana saja komputer dapat menjangkau HTTPS (biasanya Azure Blob Storage).

Jika Anda memutuskan untuk memiliki mesin di kedua layanan untuk beberapa periode waktu, tidak ada hambatan teknis. Kedua layanan tersebut bersifat independen.

Mengekspor konten dari Azure Automation

Mulailah dengan menemukan dan mengekspor konten dari Konfigurasi Status Azure Automation ke lingkungan pengembangan tempat Anda membuat, menguji, dan menerbitkan paket konten untuk konfigurasi komputer.

Konfigurasi

Anda hanya dapat mengekspor skrip konfigurasi dari Azure Automation. Tidak dimungkinkan untuk mengekspor konfigurasi node, atau mengkompilasi file MOF. Jika Anda menerbitkan file MOF langsung ke Akun Automation dan tidak lagi memiliki akses ke file asli, Anda perlu melakukan kompilasi ulang dari skrip konfigurasi privat Anda. Jika Anda tidak dapat menemukan konfigurasi asli, Anda harus mengotorisi ulang konfigurasi tersebut.

Untuk mengekspor skrip konfigurasi dari Azure Automation, pertama-tama identifikasi akun Azure Automation yang memiliki konfigurasi dan nama Grup Sumber Daya tempat Akun Automation disebarkan.

Instal modul PowerShell Az.Automation.

Install-Module -Name Az.Automation

Selanjutnya, gunakan Get-AzAutomationAccount perintah untuk mengidentifikasi Akun Automation Anda dan Grup Sumber Daya tempat mereka disebarkan. Properti ResourceGroupName dan AutomationAccountName penting untuk langkah berikutnya.

Get-AzAutomationAccount
SubscriptionId        : <your-subscription-id>
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 :
Plan                  :
CreationTime          : 6/30/2021 11:56:17 AM -05:00
LastModifiedTime      : 6/30/2021 11:56:17 AM -05:00
LastModifiedBy        :
Tags                  : {}

Temukan konfigurasi di Akun Automation Anda. Output memiliki satu entri per konfigurasi. Jika Anda memiliki banyak entri, simpan informasi sebagai variabel sehingga lebih mudah untuk bekerja dengan.

$getParams = @{
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
}

Get-AzAutomationDscConfiguration @getParams
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 : Published
Name                  : <your-configuration-name>
Tags                  : {}
CreationTime          : 6/30/2021 12:18:26 PM -05:00
LastModifiedTime      : 6/30/2021 12:18:26 PM -05:00
Description           :
Parameters            : {}
LogVerbose            : False

Terakhir, ekspor setiap konfigurasi ke file skrip lokal menggunakan perintah Export-AzAutomationDscConfiguration. Nama file yang dihasilkan menggunakan pola \ConfigurationName.ps1.

$exportParams = @{
    OutputFolder          = '<location-on-your-machine>'
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
    Name                  = '<your-configuration-name>'
}
Export-AzAutomationDscConfiguration @exportParams
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09

Mengonfigurasi ekspor menggunakan alur PowerShell

Setelah menemukan akun dan jumlah konfigurasi, Anda mungkin ingin mengekspor semua konfigurasi ke folder lokal di mesin Anda. Untuk mengotomatiskan proses ini, pipa output setiap perintah dalam contoh sebelumnya ke perintah berikutnya.

Contoh mengekspor lima konfigurasi. Pola output adalah satu-satunya indikator keberhasilan.

Get-AzAutomationAccount |
    Get-AzAutomationDscConfiguration |
    Export-AzAutomationDSCConfiguration -OutputFolder <location on your machine>
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09

Pertimbangkan untuk menguraikan file konfigurasi yang kompleks

Konfigurasi komputer dapat mengelola lebih dari satu konfigurasi per komputer. Banyak konfigurasi yang ditulis untuk Azure Automation State Configuration mengasumsikan keterbatasan mengelola konfigurasi tunggal per mesin. Untuk memanfaatkan kemampuan yang diperluas yang ditawarkan oleh konfigurasi komputer, Anda dapat membagi file konfigurasi besar menjadi banyak konfigurasi yang lebih kecil di mana masing-masing menangani skenario tertentu.

Tidak ada orkestrasi dalam konfigurasi mesin untuk mengontrol urutan bagaimana konfigurasi diurutkan. Simpan langkah-langkah dalam konfigurasi bersama-sama dalam satu paket jika perlu dilakukan secara berurutan.

Modul

Tidak dimungkinkan untuk mengekspor modul dari Azure Automation atau secara otomatis menghubungkan konfigurasi mana yang memerlukan modul dan versi mana. Anda harus memiliki modul di lingkungan lokal Anda untuk membuat paket konfigurasi mesin baru. Untuk membuat daftar modul yang Anda butuhkan untuk migrasi, gunakan PowerShell untuk meminta Azure Automation untuk nama dan versi modul.

Jika Anda menggunakan modul yang dibuat khusus dan hanya ada di lingkungan pengembangan privat Anda, tidak dimungkinkan untuk mengekspornya dari Azure Automation.

Jika Anda tidak dapat menemukan modul kustom di lingkungan Anda yang diperlukan untuk konfigurasi dan di akun, Anda tidak dapat mengkompilasi konfigurasi. Oleh karena itu, Anda tidak dapat memigrasikan konfigurasi.

Daftar modul yang diimpor di Azure Automation

Untuk mengambil daftar semua modul yang diinstal di akun otomatisasi Anda, gunakan Get-AzAutomationModule perintah . Properti IsGlobal memberi tahu Anda apakah modul selalu disertakan dalam Azure Automation, atau jika dipublikasikan ke akun.

Misalnya, untuk membuat daftar semua modul yang diterbitkan ke salah satu akun Anda.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false

Anda juga dapat menggunakan Galeri PowerShell sebagai bantuan dalam menemukan rincian tentang modul yang tersedia untuk umum. Contoh berikut mencantumkan modul yang dibangun ke dalam Akun Automation baru dan berisi sumber daya DSC.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $true |
    Find-Module -ErrorAction SilentlyContinue |
    Where-Object {'' -ne $_.Includes.DscResource} |
    Select-Object -Property Name, Version -Unique |
    Format-Table -AutoSize
Name                       Version
----                       -------
AuditPolicyDsc             1.4.0
ComputerManagementDsc      8.4.0
PSDscResources             2.12.0
SecurityPolicyDsc          2.10.0
xDSCDomainjoin             1.2.23
xPowerShellExecutionPolicy 3.1.0.0
xRemoteDesktopAdmin        1.1.0.0

Jika modul diimpor dari Galeri PowerShell, Anda dapat menyalurkan output dari Find-Module langsung ke Install-Module. Piping output di seluruh perintah menyediakan solusi untuk memuat lingkungan pengembang dengan semua modul yang saat ini berada di Akun Automation jika tersedia di Galeri PowerShell.

Anda dapat menggunakan pendekatan yang sama untuk menarik modul dari umpan NuGet kustom jika Anda telah mendaftarkan umpan di lingkungan lokal Anda sebagai repositori PowerShellGet.

Perintah Find-Module dalam contoh ini tidak menekan kesalahan, yang berarti modul apa pun yang tidak ditemukan di galeri mengembalikan pesan kesalahan.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false |
    Find-Module |
    Where-Object { '' -ne $_.Includes.DscResource } |
    Install-Module

Memeriksa skrip konfigurasi untuk persyaratan modul

Jika Anda telah mengekspor skrip konfigurasi dari Azure Automation, Anda juga dapat meninjau konten untuk detail tentang modul mana yang diperlukan untuk mengompilasi setiap konfigurasi ke file MOF. Pendekatan ini hanya diperlukan jika Anda menemukan konfigurasi di Akun Automation tempat modul telah dihapus. Konfigurasi tidak lagi berguna untuk mesin, tetapi mungkin masih ada di akun.

Di bagian atas setiap file, cari baris yang menyertakan Import-DscResource. Perintah ini hanya berlaku di dalam konfigurasi, dan digunakan untuk memuat modul pada saat kompilasi.

Misalnya, WindowsIISServerConfig konfigurasi di Galeri PowerShell memiliki baris dalam contoh ini.

configuration WindowsIISServerConfig
{

Import-DscResource -ModuleName @{ModuleName = 'xWebAdministration';ModuleVersion = '1.19.0.0'}
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

Konfigurasi mengharuskan Anda memiliki modul xWebAdministration versi 1.19.0.0 dan modul PSDesiredStateConfiguration.

Uji konten di konfigurasi mesin Azure

Untuk mengevaluasi apakah Anda dapat menggunakan konten Anda dari Konfigurasi Status Azure Automation dengan konfigurasi komputer, ikuti tutorial langkah demi langkah di halaman Cara membuat artefak paket konfigurasi komputer kustom.

Ketika Anda mencapai langkah Konfigurasi pembuat, skrip konfigurasi yang menghasilkan file MOF harus menjadi salah satu skrip yang Anda ekspor dari Azure Automation State Configuration. Anda harus menginstal modul PowerShell yang diperlukan di lingkungan Anda sebelum Anda dapat menyusun konfigurasi ke file MOF dan membuat paket konfigurasi mesin.

Bagaimana jika modul tidak berfungsi dengan konfigurasi komputer?

Beberapa modul mungkin memiliki masalah kompatibilitas dengan konfigurasi komputer. Masalah yang paling umum terkait dengan kerangka kerja .NET vs inti .NET. Informasi teknis terperinci tersedia di halaman, Perbedaan antara Windows PowerShell 5.1 dan PowerShell 7.x.

Salah satu opsi untuk mengatasi masalah kompatibilitas adalah menjalankan perintah di Windows PowerShell dari dalam modul yang diimpor di PowerShell 7, dengan menjalankan powershell.exe. Anda dapat meninjau modul sampel yang menggunakan teknik ini di repositori Azure-Policy tempat modul tersebut digunakan untuk mengaudit status Konfigurasi DSC Windows.

Contoh ini juga menggambarkan bukti kecil konsep.

# example function that could be loaded from module
function New-TaskResolvedInPWSH7 {
    # runs the fictitious command 'Get-myNotCompatibleCommand' in Windows PowerShell
    $compatObject = & powershell.exe -NoProfile -NonInteractive -Command {
        Get-myNotCompatibleCommand
    }
    # resulting object can be used in PowerShell 7
    return $compatObject
}

Apakah saya perlu menambahkan properti Alasan ke Get-TargetResource di semua modul yang saya migrasikan?

Menerapkan properti Alasan memberikan pengalaman yang lebih baik saat melihat hasil penetapan konfigurasi dari portal Azure. Get Jika metode dalam modul tidak menyertakan Alasan, output generik dikembalikan dengan detail dari properti yang dikembalikan oleh Get metode . Oleh karena itu, migrasi adalah opsional.

Mesin

Setelah Anda selesai menguji konten dari Azure Automation State Configuration dalam konfigurasi mesin, kembangkan rencana untuk migrasi mesin.

Azure Automation State Configuration tersedia untuk mesin virtual di Azure dan mesin hybrid yang terletak di luar Azure. Anda harus merencanakan setiap skenario ini menggunakan langkah-langkah yang berbeda.

Azure VM

Mesin virtual Azure sudah memiliki sumber daya di Azure, yang berarti mereka siap untuk penugasan konfigurasi mesin yang mengaitkannya dengan konfigurasi. Tugas tingkat tinggi untuk memigrasikan mesin virtual Azure adalah menghapusnya dari Azure Automation State Configuration dan kemudian menetapkan konfigurasi menggunakan konfigurasi mesin.

Untuk menghapus mesin dari Azure Automation State Configuration, ikuti langkah-langkah di halaman Cara menghapus konfigurasi dan simpul dari Automation State Configuration.

Untuk menetapkan konfigurasi menggunakan konfigurasi mesin, ikuti langkah-langkah dalam Mulai Cepat Azure Policy, seperti Mulai Cepat: Buat penugasan kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai. Pada langkah 6 saat memilih definisi kebijakan, pilih definisi yang menerapkan konfigurasi yang Anda migrasikan dari Azure Automation State Configuration.

Mesin {i>hybrid

Mesin di luar Azure dapat didaftarkan ke Azure Automation State Configuration, tetapi mereka tidak memiliki sumber daya mesin di Azure. Layanan Local Configuration Manager (LCM) di dalam komputer menangani koneksi ke Azure Automation. Catatan simpul dikelola sebagai sumber daya di jenis penyedia Azure Automation.

Sebelum menghapus mesin dari Azure Automation State Configuration, jalankan setiap simpul sebagai server berkemampuan Azure Arc. Onboarding ke Azure Arc membuat sumber daya mesin di Azure sehingga Azure Policy dapat mengelola komputer. Komputer dapat di-onboarding ke Azure Arc kapan saja, tetapi Anda dapat menggunakan Konfigurasi Status Azure Automation untuk mengotomatiskan proses.

Masalah pemecahan masalah saat mengekspor konten

Detail tentang masalah yang diketahui disediakan di bagian ini.

Mengekspor hasil konfigurasi dalam karakter "\" dalam nama file

Saat menggunakan PowerShell di macOS dan Linux, Anda mungkin mengalami masalah saat menangani output nama file dengan Export-AzAutomationDSCConfiguration.

Sebagai solusi, modul telah diterbitkan ke Galeri PowerShell bernama AADSCConfigContent. Modul ini hanya memiliki satu perintah, yang mengekspor konten konfigurasi yang disimpan di Azure Automation dengan membuat permintaan REST ke layanan.

Langkah berikutnya

  • Mengembangkan paket konfigurasi komputer kustom.
  • Gunakan modul GuestConfiguration untuk membuat definisi Azure Policy untuk manajemen skala lingkungan Anda.
  • [Tetapkan definisi kebijakan kustom Anda] [20] menggunakan portal Azure.
  • Pelajari cara melihat [detail kepatuhan untuk konfigurasi komputer][21] penetapan kebijakan.