Bagikan melalui


Menyiapkan penyebaran berkelanjutan dengan Chocolatey

Catatan

Konfigurasi Status Azure Automation akan dihentikan pada 30 September 2027, silakan transisi ke Konfigurasi Komputer Azure pada tanggal tersebut. Untuk informasi selengkapnya, lihat pengumuman posting blog. Layanan Azure Machine Configuration menggabungkan fitur Ekstensi DSC, Konfigurasi Status Azure Automation, dan fitur yang paling umum diminta dari umpan balik pelanggan. Azure Machine Configuration juga menyertakan dukungan komputer hibrid melalui server yang didukung Arc.

Penting

Tautan navigasi Tambahkan, Buat konfigurasi, dan Galeri akan dihapus dari portal pada 31 Maret 2025.

Perhatian

Azure Automation DSC untuk Linux telah dihentikan pada 30 September 2023. Untuk informasi selengkapnya, lihat pengumuman.

Di dunia Azure DevOps, ada banyak alat untuk membantu terhadap berbagai titik dalam alur integrasi berkelanjutan. Konfigurasi Status Azure Automation adalah tambahan baru yang disambut baik untuk opsi yang dapat diterapkan oleh tim DevOps.

Azure Automation adalah layanan terkelola di Microsoft Azure yang memungkinkan Anda mengotomatiskan berbagai tugas menggunakan runbook, simpul, dan sumber daya bersama, seperti informasi masuk, jadwal, dan variabel global. Konfigurasi Status Azure Automation mengembangkan kemampuan automasi ini dengan menyertakan alat Konfigurasi Status yang Diinginkan (DSC). Berikut adalah ringkasan yang bagus.

Artikel ini menunjukkan cara menyiapkan Penyebaran Berkelanjutan (CD) untuk komputer Windows. Anda dapat dengan mudah memperluas teknik untuk menyertakan komputer Windows sebanyak yang diperlukan dalam peran, misalnya, situs web, dan pergi dari sana ke lebih banyak peran.

Penyebaran Berkelanjutan untuk IAAS VM

Pada tingkat tinggi

Ada banyak hal yang berlangsung di sini, tetapi untungnya dapat dipecah menjadi dua proses utama:

  • Menulis kode dan mengujinya, lalu membuat dan menerbitkan paket penginstalan untuk versi utama dan kecil dari sistem.
  • Membuat dan mengelola VM yang memasang dan menjalankan kode dalam paket.

Setelah kedua proses inti ini diberlakukan, mudah untuk memperbarui paket secara otomatis pada VM Anda saat versi baru dibuat dan disebarkan.

Gambaran umum komponen

Manajer paket seperti apt-get terkenal di dunia Linux, tetapi tidak terlalu terkenal di dunia Windows. Chocolatey adalah manajer paket untuk Windows. Posting blog Scott Hanselman tentang Chocolatey adalah pengantar yang bagus. Chocolatey memungkinkan Anda menggunakan baris perintah untuk menginstal paket dari repositori pusat ke sistem operasi Windows. Anda dapat membuat dan mengelola repositori Anda sendiri, dan Chocolatey dapat memasang paket dari sejumlah repositori yang Anda tetapkan.

PowerShell DSC adalah alat PowerShell yang memungkinkan Anda menyatakan konfigurasi yang Anda inginkan untuk komputer. Misalnya, jika Anda ingin Chocolatey dipasang, IIS dipasang, port 80 dibuka, dan versi 1.0.0 dari situs web Anda dipasang, DSC Configuration Manager Lokal (LCM) mengimplementasikan konfigurasi tersebut. Server penarikan DSC menyimpan repositori konfigurasi untuk komputer Anda. LCM pada setiap komputer memeriksa secara berkala untuk melihat apakah konfigurasinya cocok dengan konfigurasi yang disimpan. Ini dapat melaporkan status atau mencoba membawa komputer kembali ke penyelarasan dengan konfigurasi yang disimpan. Anda dapat mengedit konfigurasi yang disimpan di server penarikan agar komputer atau serangkaian komputer selaras dengan konfigurasi yang diubah.

Sumber daya DSC adalah modul kode yang memiliki kemampuan khusus, seperti mengelola jaringan, Direktori Aktif, atau SQL Server. Sumber Daya Chocolatey DSC tahu cara mengakses NuGet Server, mengunduh paket, menginstal paket, dan melakukan tugas lainnya. Ada banyak Sumber Daya DSC lainnya di Galeri PowerShell. Anda memasang modul tersebut di server penarikan Konfigurasi Status Azure Automation untuk digunakan oleh konfigurasi Anda.

Templat Resource Manager menyediakan cara deklaratif untuk menghasilkan sumber daya untuk infrastruktur Anda seperti:

  • jaringan dan subnet
  • keamanan jaringan
  • Routing
  • load balancer,
  • NIC, VM, dan lainnya

Untuk perbandingan model penyebaran Resource Manager (deklaratif) dengan model penyebaran klasik Azure (imperatif), lihat Penyebaran Azure Resource Manager vs. klasik. Artikel ini berisi pembahasan tentang penyedia sumber daya inti: komputasi, penyimpanan, dan jaringan.

Salah satu fitur utama templat Resource Manager adalah kemampuannya untuk menginstal ekstensi VM selama provisi VM. Ekstensi VM memiliki kemampuan khusus, seperti menjalankan skrip kustom, memasang perangkat lunak anti-virus, dan menjalankan skrip konfigurasi DSC. Ada banyak jenis ekstensi VM lainnya.

Perjalanan cepat di sekitar diagram

Mulai dari atas, Anda menulis kode Anda, membangunnya, mengujinya, lalu membuat paket penginstalan. Chocolatey dapat menangani berbagai jenis paket penginstalan, seperti MSI, MSU, ZIP. Dan Anda memiliki kekuatan penuh PowerShell untuk melakukan penginstalan aktual jika kemampuan asli Chocolatey tidak memadai. Masukkan paket ke tempat yang dapat dijangkau - repositori paket. Contoh penggunaan ini menggunakan folder publik di akun penyimpanan blob Azure, tetapi bisa di mana saja. Chocolatey bekerja secara native dengan server NuGet dan beberapa server lainnya untuk manajemen metadata paket. Artikel ini menjelaskan opsinya. Contoh penggunaan menggunakan NuGet. Nuspec adalah metadata terhadap paket Anda. Informasi Nuspec dikompilasi ke dalam NuPkg dan disimpan di server NuGet. Ketika konfigurasi Anda meminta paket berdasarkan nama dan mereferensikan server NuGet, sumber daya Chocolatey DSC pada VM mengambil paket dan memasangnya. Anda juga dapat meminta versi paket tertentu.

Di kiri bawah gambar, ada templat Azure Resource Manager. Dalam contoh penggunaan ini, ekstensi VM mendaftarkan VM dengan server penarikan Konfigurasi Status Azure Automation sebagai simpul. Konfigurasi disimpan di server penarikan dua kali: satu kali sebagai teks biasa dan satu kali dikompilasi sebagai file MOF. Di portal Microsoft Azure, MOF merepresentasikan konfigurasi simpul, dibandingkan dengan konfigurasi sederhana.

Relatif mudah untuk membuat Nuspec, mengkompilasinya, dan menyimpannya di server NuGet. Langkah berikutnya untuk penyebaran berkelanjutan memerlukan tugas satu kali berikut:

  • Menyiapkan server penarikan
  • Daftarkan simpul Anda dengan server
  • Membuat konfigurasi awal di server

Anda hanya perlu menyegarkan konfigurasi dan konfigurasi node pada server penarikan saat meningkatkan dan menyebarkan paket ke repositori.

Jika Anda tidak memulai dengan templat Resource Manager, ada perintah PowerShell untuk membantu Anda mendaftarkan VM Anda dengan server penarikan. Untuk informasi selengkapnya, lihat Onboarding komputer untuk manajemen berdasarkan Konfigurasi Status Azure Automation.

Tentang contoh penggunaan

Contoh penggunaan dalam artikel ini dimulai dengan VM dari gambar Windows Server 2012 R2 generik dari galeri Azure. Anda dapat memulai dari gambar yang disimpan dan kemudian mengubah dari sana dengan konfigurasi DSC. Namun, mengubah konfigurasi yang dimasukkan ke dalam gambar jauh lebih sulit daripada memperbarui konfigurasi secara dinamis menggunakan DSC.

Anda tidak perlu menggunakan template Resource Manager dan ekstensi VM untuk menggunakan teknik ini dengan VM Anda. Dan VM Anda tidak harus berada di Azure untuk berada di manajemen CD. Cukup instal Chocolatey dan konfigurasikan LCM pada VM sehingga tahu di mana server penarikan berada.

Saat Anda memperbarui paket pada VM yang sedang diproduksi, Anda perlu mengeluarkan VM tersebut dari rotasi saat pembaruan dipasang. Cara melakukan ini sangat beragam. Misalnya, dengan VM di belakang Azure Load Balancer, Anda dapat menambahkan Probe Kustom. Saat memperbarui VM, minta titik akhir pemeriksaan mengembalikan 400. Tweak yang diperlukan untuk menyebabkan perubahan ini dapat berada di dalam konfigurasi Anda, seperti halnya tweak untuk mengalihkannya kembali ke mengembalikan 200 setelah pembaruan selesai.

Sumber lengkap untuk contoh penggunaan ini ada di proyek Visual Studio ini di GitHub.

Langkah 1: Siapkan server penarikan dan akun Automation

Jalankan perintah berikut dalam sesi PowerShell yang diautentikasi (Connect-AzAccount):

New-AzResourceGroup -Name MY-AUTOMATION-RG -Location MY-RG-LOCATION-IN-QUOTES
$newAzAutomationAccountSplat = @{
    ResourceGroupName = 'MY-AUTOMATION-RG'
    Location = 'MY-RG-LOCATION-IN-QUOTES'
    Name = 'MY-AUTOMATION-ACCOUNT'
}
New-AzAutomationAccount @newAzAutomationAccountSplat

Langkah ini membutuhkan waktu beberapa menit saat server penarikan disiapkan.

Anda dapat membuat akun Automation di salah satu wilayah Azure berikut:

  • AS Timur 2
  • AS Tengah Bagian Selatan
  • US Gov Virginia
  • Eropa Barat
  • Asia Tenggara
  • Jepang Timur
  • India Tengah
  • Australia Tenggara
  • Kanada Tengah
  • Eropa Utara

Langkah 2: Buat tweak ekstensi VM ke templat Resource Manager

Detail untuk pendaftaran VM (menggunakan ekstensi VM DSC PowerShell) yang disediakan dalam Templat Mulai Cepat Azure ini. Langkah ini mendaftarkan VM baru Anda dengan server penarikan dalam daftar Simpul Konfigurasi Negara. Bagian dari pendaftaran ini menentukan konfigurasi simpul yang akan diterapkan ke simpul. Konfigurasi simpul ini belum harus ada di server penarikan, tetapi Anda perlu memilih nama simpul dan nama konfigurasi. Untuk contoh ini, node adalah isvbox dan nama konfigurasinya adalah ISVBoxConfig. Nama konfigurasi node yang Anda tentukan DeploymentTemplate.json adalah ISVBoxConfig.isvbox.

Langkah 3: Tambahkan sumber daya DSC yang diperlukan ke server penarikan

Galeri PowerShell dapat menginstal sumber daya DSC ke akun Azure Automation Anda. Navigasikan ke sumber daya yang Anda inginkan dan pilih Sebarkan ke Azure Automation.

Contoh Galeri PowerShell

Teknik lain yang baru-baru ini ditambahkan ke portal Microsoft Azure memungkinkan Anda untuk menarik modul baru atau memperbarui modul yang ada. Pilih ikon Telusuri Galeri untuk melihat daftar modul di galeri, menelusuri detail, dan mengimpor ke akun Automation Anda. Anda dapat menggunakan proses ini untuk menjaga modul Anda tetap terbarui. Selain itu, fitur impor memeriksa dependensi dengan modul lain untuk memastikan tidak ada yang tidak sinkron.

Ada juga pendekatan manual, hanya digunakan sekali per sumber daya, kecuali Jika Anda ingin meningkatkannya nanti. Untuk informasi selengkapnya tentang penulisan modul integrasi PowerShell, lihat Menulis Modul Integrasi untuk Azure Automation.

Catatan

Struktur folder modul integrasi PowerShell untuk komputer Windows sedikit berbeda dengan struktur folder yang diharapkan oleh Azure Automation.

  1. Pasang Windows Management Framework v5 (tidak diperlukan untuk Windows 10).

  2. Instal modul integrasi.

    Install-Module -Name MODULE-NAME`    <—grabs the module from the PowerShell Gallery
    
  3. Salin folder modul dari C:\Program Files\WindowsPowerShell\Modules\MODULE-NAME ke folder sementara.

  4. Hapus sampel dan dokumentasi dari folder utama.

  5. Zip folder utama, beri nama file ZIP dengan nama foldernya.

  6. Masukkan file ZIP ke lokasi HTTP yang dapat dijangkau, seperti penyimpanan blob di akun Azure Storage.

  7. Jalankan perintah berikut.

    $newAzAutomationModuleSplat = @{
        ResourceGroupName = 'MY-AUTOMATION-RG'
        AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
        Name = 'MODULE-NAME'
        ContentLinkUri = 'https://STORAGE-URI/CONTAINERNAME/MODULE-NAME.zip'
    }
    New-AzAutomationModule @newAzAutomationModuleSplat
    

Contoh yang disertakan mengimplementasikan langkah-langkah ini untuk cChoco dan xNetworking.

Langkah 4: Tambahkan konfigurasi simpul ke server penarikan

Tidak ada yang khusus saat Anda pertama kali mengimpor konfigurasi ke server penarikan dan kompilasi. Semua impor atau kompilasi selanjutnya dari konfigurasi yang sama akan terlihat sama persis. Setiap kali memperbarui paket dan perlu mengirimkannya ke produksi, Anda melakukan langkah ini setelah memastikan file konfigurasi sudah benar - termasuk versi baru dari paket Anda. Berikut adalah file ISVBoxConfig.ps1konfigurasi :

Configuration ISVBoxConfig
{
    Import-DscResource -ModuleName cChoco
    Import-DscResource -ModuleName xNetworking

    Node 'isvbox' {

        cChocoInstaller installChoco
        {
            InstallDir = 'C:\choco'
        }

        WindowsFeature installIIS
        {
            Ensure = 'Present'
            Name   = 'Web-Server'
        }

        xFirewall WebFirewallRule
        {
            Direction    = 'Inbound'
            Name         = 'Web-Server-TCP-In'
            DisplayName  = 'Web Server (TCP-In)'
            Description  = 'IIS allow incoming web site traffic.'
            Enabled       = 'True'
            Action       = 'Allow'
            Protocol     = 'TCP'
            LocalPort    = '80'
            Ensure       = 'Present'
        }

        cChocoPackageInstaller trivialWeb
        {
            Name      = 'trivialweb'
            Version   = '1.0.0'
            Source    = 'MY-NUGET-V2-SERVER-ADDRESS'
            DependsOn = '[cChocoInstaller]installChoco','[WindowsFeature]installIIS'
        }
    }
}

Skrip berikut New-ConfigurationScript.ps1 dimodifikasi untuk menggunakan modul Az PowerShell:

$importAzAutomationDscConfigurationSplat = @{
    ResourceGroupName = 'MY-AUTOMATION-RG'
    AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
    SourcePath = 'C:\temp\AzureAutomationDsc\ISVBoxConfig.ps1'
    Published = -Published
    Force = -Force
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat

$startAzAutomationDscCompilationJobSplat = @{
    ResourceGroupName = 'MY-AUTOMATION-RG'
    AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
    ConfigurationName = 'ISVBoxConfig'
}
$jobData = Start-AzAutomationDscCompilationJob @startAzAutomationDscCompilationJobSplat

$compilationJobId = $jobData.Id

$getAzAutomationDscCompilationJobSplat = @{
    ResourceGroupName = 'MY-AUTOMATION-RG'
    AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
    Id = $compilationJobId
}
Get-AzAutomationDscCompilationJob @getAzAutomationDscCompilationJobSplat

Langkah 5: Buat dan pertahankan metadata paket

Untuk setiap paket yang dimasukkan ke dalam repositori paket, Anda memerlukan Nuspec yang mendeskripsikannya. Ini harus dikompilasi dan disimpan di server NuGet Anda. Untuk informasi selengkapnya, lihat [Buat paket NuGet menggunakan nuget.exe CLI].

Anda dapat menggunakan MyGet.org sebagai server NuGet. Anda dapat membeli layanan ini, tetapi ada SKU pemula gratis. Untuk petunjuk tentang menginstal server NuGet Anda sendiri untuk paket privat Anda, lihat dokumentasi tentang Nuget.org.

Langkah 6: Satukan semuanya

Setiap kali versi lulus QA dan disetujui untuk penyebaran, paket dibuat, dan nuspec serta nupkg diperbarui dan disebarkan ke server NuGet. Anda harus memperbarui konfigurasi (langkah 4) dengan nomor versi baru. Kemudian, kirimkan ke server penarikan dan kompilasi.

Sejak saat itu, VM bergantung pada konfigurasi tersebut untuk menarik pembaruan dan memasangnya. Masing-masing pembaruan ini sederhana - hanya satu atau dua baris PowerShell. Untuk Azure DevOps, beberapa di antaranya dienkapsulasi dalam tugas build yang dapat Anda rantai bersama-sama dalam build. Artikel ini menyediakan detail selengkapnya. Repositori GitHub ini menyediakan detail tugas build yang tersedia.

Langkah berikutnya