Ekstensi Konfigurasi Status yang Diinginkan dengan templat Azure Resource Manager
Catatan
Sebelum Anda mengaktifkan ekstensi DSC, kami ingin Anda mengetahui bahwa versi DSC yang lebih baru sekarang tersedia secara umum, dikelola oleh fitur bernama konfigurasi komputer. Fitur konfigurasi komputer mencakup fitur handler ekstensi Desired State Configuration (DSC) dan fitur yang paling umum diminta dari umpan balik pelanggan. Konfigurasi komputer juga mencakup dukungan komputer hibrid melalui server yang diaktifkan Arc.
Artikel ini menjelaskan templat Azure Resource Manager untuk Handler ekstensi Konfigurasi Status Yang Diinginkan (DSC).
Catatan
Anda mungkin menemukan contoh skema yang agak berbeda. Perubahan skema terjadi pada rilis Oktober 2016. Untuk detailnya, lihat Memperbarui dari format sebelumnya.
Contoh Bicep untuk VM
Ekstensi DSC mewarisi properti ekstensi asali. Untuk informasi selengkapnya, lihat Kelas VirtualMachineExtension.
@description('URI of the configuration package')
param configUri string
@description('first configuration parameter')
param arg1 string
@description('second configuration parameter')
@secure()
param arg2 string
var configName = split(split(configUri, '/')[4], '.')[0]
resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' existing = {
name: srvName
}
resource configuration_dscext 'Microsoft.Compute/virtualMachines/extensions@2024-07-01' = {
name: 'configurationname_dscext'
parent: vm
location: location
properties: {
publisher: 'Microsoft.Powershell'
type: 'DSC'
typeHandlerVersion: '2.77'
autoUpgradeMinorVersion: true
settings: {
wmfVersion: 'latest'
configuration: {
url: configUri
script: 'configurationname_dscext.ps1'
function: 'configurationname_dscext'
}
configurationArguments: {
arg1: arg1
}
advancedOptions: {
rebootNodeIfNeeded: true
}
}
protectedSettings: {
configurationArguements: {
arg2: arg2
}
}
}
}
Contoh Bicep untuk set skala komputer virtual Windows
Simpul set skala komputer virtual memiliki bagian yang menyertakan atribut extensionProfile . Di ekstensi, tambahkan detail untuk Ekstensi DSC.
Untuk detail terbaru tentang penulisan templat yang menyebarkan ekstensi untuk Virtual Machine Scale Sets, lihat dokumen Microsoft.Compute virtualMachineScaleSets
Ekstensi DSC mewarisi properti ekstensi asali. Untuk informasi selengkapnya, lihat Kelas VirtualMachineScaleSetExtension.
Pengaturan vs. protectedSettings
Semua pengaturan disimpan dalam file teks pengaturan pada VM. Properti yang tercantum pada settings adalah properti publik. Properti publik tidak dienkripsi dalam file teks pengaturan. Properti yang tercantum pada protectedSettings dienkripsi dengan sertifikat dan tidak ditampilkan dalam teks biasa pada file pengaturan di VM.
Jika konfigurasi memerlukan kredensial, Anda dapat menyertakan kredensial dalam protectedSettings:
"protectedSettings": {
"configurationArguments": {
"parameterOfTypePSCredential1": {
"userName": "UsernameValue1",
"password": "PasswordValue1"
}
}
}
Contoh menggunakan skrip konfigurasi di Azure Storage
Contoh berikut adalah dari ringkasan handler ekstensi DSC.
Contoh ini menggunakan templat Resource Manager sebagai ganti cmdlet untuk menyebarkan ekstensi.
Simpan konfigurasi IisInstall.ps1, letakkan dalam file .zip (misalnya: iisinstall.zip
), lalu unggah file dalam URL yang dapat diakses.
Contoh ini menggunakan penyimpanan Blob Azure, tetapi Anda dapat mengunduh .zip dari lokasi arbitrer mana pun.
Dalam templat Resource Manager, kode berikut menginstruksikan VM agar mengunduh file yang tepat, lalu menjalankan fungsi PowerShell yang sesuai:
"settings": {
"configuration": {
"url": "https://demo.blob.core.windows.net/iisinstall.zip",
"script": "IisInstall.ps1",
"function": "IISInstall"
}
},
"protectedSettings": {
"configurationUrlSasToken": "odLPL/U1p9lvcnp..."
}
Memperbarui dari format sebelumnya
Setiap pengaturan dalam format ekstensi sebelumnya (dan yang memiliki properti publik ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken, atau Properties) secara otomatis beradaptasi dengan format ekstensi saat ini. Properti ini berjalan seperti sebelumnya.
Skema berikut menunjukkan seperti apa skema pengaturan sebelumnya:
"settings": {
"WMFVersion": "latest",
"ModulesUrl": "https://UrlToZipContainingConfigurationScript.ps1.zip",
"SasToken": "SAS Token if ModulesUrl points to private Azure Blob Storage",
"ConfigurationFunction": "ConfigurationScript.ps1\\ConfigurationFunction",
"Properties": {
"ParameterToConfigurationFunction1": "Value1",
"ParameterToConfigurationFunction2": "Value2",
"ParameterOfTypePSCredential1": {
"UserName": "UsernameValue1",
"Password": "PrivateSettingsRef:Key1"
},
"ParameterOfTypePSCredential2": {
"UserName": "UsernameValue2",
"Password": "PrivateSettingsRef:Key2"
}
}
},
"protectedSettings": {
"Items": {
"Key1": "PasswordValue1",
"Key2": "PasswordValue2"
},
"DataBlobUri": "https://UrlToConfigurationDataWithOptionalSasToken.psd1"
}
Berikut adalah cara format sebelumnya beradaptasi dengan format saat ini:
Nama Properti Saat Ini | Setara skema sebelumnya |
---|---|
settings.wmfVersion | settings.WMFVersion |
settings.configuration.url | settings.ModulesUrl |
settings.configuration.script | Bagian pertama dari settings.ConfigurationFunction (sebelum \\) |
settings.configuration.function | Bagian kedua dari settings.ConfigurationFunction (setelah \\) |
settings.configuration.module.name | settings.ModuleSource |
settings.configuration.module.version | settings.ModuleVersion |
settings.configurationArguments | settings.Properties |
settings.configurationData.url | protectedSettings.DataBlobUri (tanpa token SAS) |
settings.privacy.dataCollection | settings.Privacy.dataCollection |
settings.advancedOptions.downloadMappings | settings.AdvancedOptions.DownloadMappings |
protectedSettings.configurationArguments | protectedSettings.Properties |
protectedSettings.configurationUrlSasToken | settings.SasToken |
protectedSettings.configurationDataUrlSasToken | Token SAS dari protectedSettings.DataBlobUri |
Pemecahan Masalah
Berikut adalah beberapa kesalahan yang mungkin Anda alami dan cara Anda dapat memperbaikinya.
Nilai tidak valid
"Privacy.dataCollection adalah '{0}'. Satu-satunya nilai yang mungkin adalah '', 'Enable', dan 'Disable'". "WmfVersion adalah '{0}'. Satu-satunya nilai yang memungkinkan adalah … dan 'terbaru'".
Masalah: Nilai yang disediakan tidak diizinkan.
Solusi: Ubah nilai yang tidak valid ke nilai yang valid.
URL tidak valid
"ConfigurationData.url adalah '{0}'. Ini bukan URL yang valid" "DataBlobUri adalah '{0}'. Ini bukan URL yang valid" "Configuration.url adalah '{0}'. Ini bukan URL yang valid"
Masalah: URL yang disediakan tidak valid.
Solusi: Periksa semua URL yang Anda sediakan. Pastikan bahwa semua URL teratasi di lokasi yang valid yang dapat diakses ekstensi pada komputer jarak jauh.
Jenis ConfigurationArgument tidak valid
"Jenis configurationArguments tidak valid {0}"
Masalah: Properti ConfigurationArguments tidak dapat mengatasi objek tabel Hash.
Solusi: Jadikan properti ConfigurationArguments Anda sebagai tabel Hash. Ikuti format yang disediakan dalam contoh sebelumnya. Perhatikan kutipan, koma, dan kurung.
Duplikat ConfigurationArguments
"Ditemukan argumen duplikat '{0}' dalam configurationArguments publik dan yang dilindungi"
Masalah: ConfigurationArguments pada pengaturan publik dan ConfigurationArguments pada pengaturan yang dilindungi memiliki properti dengan nama yang sama.
Solusi: Hapus salah satu properti duplikat.
Properti hilang
"settings.Configuration.function mewajibkan agar settings.configuration.url settings.configuration.module ditentukan"
"settings.Configuration.url mewajibkan agar settings.configuration.script ditentukan"
"settings.Configuration.script mewajibkan agar settings.configuration.url ditentukan"
"settings.Configuration.url mewajibkan agar settings.configuration.function ditentukan"
"protectedSettings.ConfigurationUrlSasToken mewajibkan agar settings.configuration.url ditentukan"
"protectedSettings.ConfigurationDataUrlSasToken mewajibkan agar settings.configurationData.url ditentukan"
Masalah: Properti yang ditentukan memerlukan properti lain, yang hilang.
Solusi:
- Masukkan properti yang hilang.
- Hapus properti yang membutuhkan properti yang hilang.
Langkah berikutnya
- Pelajari tentang menggunakan Set Skala Komputer Virtual dengan ekstensi Azure DSC.
- Temukan detail selengkapnya tentang manajemen kredensial aman DSC.
- Dapatkan pengantar handler ekstensi Azure DSC.
- Untuk informasi selengkapnya tentang PowerShell DSC, kunjungi Pusat dokumentasi PowerShell.