Tugas Penyebaran Grup Sumber Daya Azure
Azure DevOps
Gunakan tugas ini untuk menyebarkan, memulai, menghentikan, dan menghapus Grup Sumber Daya Azure.
Cuplikan YAML
# Azure resource group deployment
# Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines
- task: AzureResourceGroupDeployment@2
inputs:
azureSubscription:
#action: 'Create Or Update Resource Group' # Options: create Or Update Resource Group, select Resource Group, start, stop, stopWithDeallocate, restart, delete, deleteRG
resourceGroupName:
#location: # Required when action == Create Or Update Resource Group
#templateLocation: 'Linked artifact' # Options: linked Artifact, uRL Of The File
#csmFileLink: # Required when templateLocation == URL Of The File
#csmParametersFileLink: # Optional
#csmFile: # Required when TemplateLocation == Linked Artifact
#csmParametersFile: # Optional
#overrideParameters: # Optional
#deploymentMode: 'Incremental' # Options: Incremental, Complete, Validation
#enableDeploymentPrerequisites: 'None' # Optional. Options: none, configureVMwithWinRM, configureVMWithDGAgent
#teamServicesConnection: # Required when enableDeploymentPrerequisites == ConfigureVMWithDGAgent
#teamProject: # Required when enableDeploymentPrerequisites == ConfigureVMWithDGAgent
#deploymentGroupName: # Required when enableDeploymentPrerequisites == ConfigureVMWithDGAgent
#copyAzureVMTags: true # Optional
#runAgentServiceAsUser: # Optional
#userName: # Required when enableDeploymentPrerequisites == ConfigureVMWithDGAgent && RunAgentServiceAsUser == True
#password: # Optional
#outputVariable: # Optional
#deploymentName: # Optional
#deploymentOutputs: # Optional
#addSpnToEnvironment: false # Optional
Argumen
| Argumen | Deskripsi |
|---|---|
ConnectedServiceName Langganan Azure |
(Diperlukan) Pilih koneksi layanan yang berisi langganan Azure untuk penyebaran. Alias argumen: azureSubscription |
action Tindakan |
(Diperlukan) Tindakan yang akan dilakukan pada sumber daya Atau grup sumber daya Azure. Nilai default: Create Or Update Resource Group |
resourceGroupNameGrup sumber daya |
(Diperlukan) Berikan nama grup sumber daya. |
location Lokasi |
(Diperlukan) Lokasi untuk menyebarkan grup sumber daya. Jika grup sumber daya sudah ada di langganan, maka nilai ini akan diabaikan. |
templateLocation Lokasi templat |
(Diperlukan) Pilih artefak tertaut atau URL file. Nilai default: Linked artifact |
csmFileLinkTautan templat |
(Diperlukan) Tentukan URL file templat. Contoh:https://raw.githubusercontent.com/Azure/... Untuk menyebarkan templat yang disimpan di akun penyimpanan pribadi, ambil dan sertakan token tanda tangan akses bersama (SAS) di URL templat. Contoh: <blob_storage_url>/template.json?< SAStoken>. Untuk mengunggah file templat (atau templat tertaut) ke akun penyimpanan dan menghasilkan token SAS, Anda dapat menggunakan tugas salin file Azure atau mengikuti langkah-langkah menggunakan PowerShell atau Azure CLI. Untuk melihat parameter templat dalam kisi, klik ... di samping Menimpa kotak teks parameter templat. Fitur ini mengharuskan aturan CORS diaktifkan di sumbernya. Jika templat berada di blob penyimpanan Azure, lihat ini untuk mengaktifkan CORS. |
csmParametersFileLinkTautan parameter templat |
(Opsional) Tentukan URL file parameter. Untuk menggunakan file yang disimpan dalam akun penyimpanan pribadi, ambil dan sertakan token tanda tangan akses bersama (SAS) di URL templat. Contoh:<blob_storage_url>/template.json?< SAStoken>. Untuk mengunggah file parameter ke akun penyimpanan dan menghasilkan token SAS, Anda dapat menggunakan tugas penyalinan file Azure atau mengikuti langkah-langkah menggunakan PowerShell atau Azure CLI. Untuk melihat parameter templat dalam kisi, klik ... di samping Menimpa kotak teks parameter templat. Fitur ini mengharuskan aturan CORS diaktifkan di sumbernya. Jika templat berada di blob penyimpanan Azure, lihat ini untuk mengaktifkan CORS. |
csmFileTemplat |
(Diperlukan) Tentukan jalur atau pola yang mengarah ke templat Resource Manager Azure. Untuk informasi lebih lanjut tentang template lihat https://aka.ms/azuretemplates. Untuk memulai segera gunakan template https://github.com/Azure/azure-quickstart-templates/tree/master/demos/vm-winrm-windows. |
csmParametersFileParameter templat |
(Opsional) Tentukan jalur atau pola yang menunjuk ke file parameter untuk templat Resource Manager Azure. |
overrideParametersMengambil alih parameter templat |
(Opsional) Untuk melihat parameter templat dalam kisi, klik ... di samping Menimpa kotak teks Parameter. Fitur ini mengharuskan aturan CORS diaktifkan di sumbernya. Jika templat berada di blob penyimpanan Azure, lihat ini untuk mengaktifkan CORS. Atau ketik parameter templat untuk dikesampingkan di kotak teks. Contoh: -storageName fabrikam -adminUsername $(vmusername) -adminPassword $(password) -azureKeyVaultName $(fabrikamFibre). Jika nilai parameter yang Anda gunakan memiliki beberapa kata, lampirkan dalam tanda kutip, bahkan jika Anda meneruskannya menggunakan variabel. Misalnya, -name "parameter value" -name2 "$(var)". Untuk mengganti parameter tipe objek, gunakan objek JSON yang di string. Misalnya, -options ["option1"] -map {"key1": "value1" }. |
deploymentModeMode penyebaran |
(Diperlukan) Incremental mode menangani penyebaran sebagai pembaruan inkremental ke grup sumber daya. Ini meninggalkan sumber daya yang tidak berubah yang ada dalam grup sumber daya tetapi tidak ditentukan dalam template. Complete mode menghapus sumber daya yang tidak ada di template Anda. Validation mode memungkinkan Anda menemukan masalah dengan template sebelum membuat sumber daya yang sebenarnya. Perhatikan bahwa mode ini selalu membuat grup sumber daya, meskipun tidak ada sumber daya yang disebarkan. Nilai default: Incremental |
enableDeploymentPrerequisitesAktifkan prasyarat |
(Opsional) Opsi ini hanya akan berlaku jika grup Sumber Daya berisi komputer virtual. Memilih opsi Grup Penyebaran akan mengonfigurasi agen Grup Penyebaran di masing-masing mesin virtual. Memilih opsi WinRM mengonfigurasi pendengar Windows Remote Management (WinRM) melalui protokol HTTPS di port 5986, menggunakan sertifikat yang ditandatangani sendiri. Konfigurasi ini diperlukan untuk melakukan operasi penyebaran pada mesin Azure. Jika 虛擬機器 target didukung oleh penyeimbang Beban, pastikan aturan NAT Masuk dikonfigurasi untuk port target (5986). Nilai default: None |
deploymentGroupEndpointAzure Pipelines koneksi layanan |
(Diperlukan) Tentukan koneksi layanan untuk terhubung ke organisasi Azure DevOps atau pengumpulan untuk pendaftaran agen. Anda dapat membuat koneksi layanan menggunakan +Baru, dan memilih Autentikasi berbasis Token. Anda memerlukan token akses pribadi (PAT) untuk menyiapkan koneksi layanan. Klik Kelola untuk memperbarui detail koneksi layanan. Alias argumen: teamServicesConnection |
projectProyek tim |
(Diperlukan) Tentukan proyek Tim yang memiliki Grup Penyebaran yang ditentukan di dalamnya. Alias argumen: teamProject |
deploymentGroupNameGrup Penyebaran |
(Diperlukan) Tentukan Grup Penyebaran tempat Agen akan didaftarkan. Untuk panduan selengkapnya, lihat Grup Penyebaran. |
copyAzureVMTagsSalin tag Azure VM ke agents |
(Opsional) Pilih apakah tag yang dikonfigurasi pada VM Azure perlu disalin ke agen Grup Penyebaran yang sesuai. Secara default semua tag Azure akan disalin mengikuti format Kunci: Nilai. Contoh: Tag Azure "Peran : Web" akan disalin apa adanya ke mesin Agen. Untuk informasi selengkapnya tentang cara tag sumber daya Azure merujuk ke tautan. |
runAgentServiceAsUserMenjalankan layanan agen sebagai pengguna |
(Opsional) Putuskan apakah akan menjalankan layanan agen sebagai pengguna selain default. Pengguna default adalah NT AUTHORITY\\SYSTEM di Windows dan root di Linux. |
userNameNama pengguna |
(Diperlukan) Nama pengguna untuk menjalankan layanan agen di mesin virtual. Untuk pengguna domain, silakan masukkan nilai sebagai domain\\username atau username@domain.com. Untuk pengguna lokal, silakan masukkan hanya nama pengguna. Diasumsikan bahwa pengguna domain yang sama atau pengguna lokal dengan nama yang sama, masing-masing, hadir di semua mesin virtual dalam grup sumber daya. |
passwordKata Sandi |
Kata sandi bagi pengguna untuk menjalankan layanan agen di VM Windows. Diasumsikan bahwa kata sandi sama untuk pengguna yang ditentukan pada semua VM. Ini dapat menerima variabel yang didefinisikan dalam alur build atau rilis sebagai $(passwordVariable). Anda dapat menandai variabel sebagai rahasia untuk mengamankannya. Untuk VM linux, kata sandi tidak diperlukan dan akan diabaikan. |
outputVariableDetail VM untuk WinRM |
(Opsional) Berikan nama untuk variabel untuk grup sumber daya. Variabel dapat digunakan sebagai $(variableName) untuk merujuk ke grup sumber daya dalam tugas berikutnya seperti dalam tugas PowerShell on Target Machines untuk menyebarkan aplikasi. Hanya berlaku ketika tindakan yang dipilih adalah Buat, Perbarui, atau Pilih, dan diperlukan saat grup sumber daya yang ada dipilih. |
deploymentNameNama penyebaran |
(Opsional) Menentukan nama penyebaran grup sumber daya untuk dibuat |
deploymentOutputsOutput penyebaran |
(Opsional) Berikan nama untuk variabel untuk variabel output yang akan berisi bagian output dari objek penyebaran saat ini dalam format string. Anda dapat menggunakan cmdlet ConvertFrom-Json PowerShell untuk mengurai objek JSON dan mengakses nilai output individual. |
addSpnToEnvironmentMengakses detail perwakilan layanan dalam parameter penimpaan |
Menambahkan ID perwakilan layanan dan kunci titik akhir Azure yang Anda pilih ke lingkungan eksekusi skrip. Anda dapat menggunakan variabel-variabel ini: $servicePrincipalId dan $servicePrincipalKey dalam parameter override seperti -key $servicePrincipalKey |
Pemecahan Masalah
Galat: Galat Server Internal
Masalah-masalah ini sebagian besar bersifat sementara. Ada beberapa alasan mengapa hal itu bisa terjadi:
- Salah satu layanan Azure yang anda coba sebarkan sedang menjalani pemeliharaan di wilayah yang anda coba sebarkan. https://status.azure.com/ Awasi untuk memeriksa waktu henti Azure Services.
- Azure Pipelines sendiri sedang melalui pemeliharaan. https://status.dev.azure.com/ Awasi downtime.
Namun, kami telah melihat beberapa contoh di mana ini disebabkan oleh kesalahan dalam templat ARM, seperti layanan Azure yang anda coba sebarkan tidak mendukung wilayah yang Anda pilih untuk sumber daya.
Kesalahan: Batas waktu
Masalah batas waktu bisa datang dari dua tempat:
- Agen Azure Pipelines
- Penyebaran Portal
Anda dapat mengidentifikasi apakah batas waktu berasal dari portal, dengan memeriksa tautan penyebaran portal yang akan ada di log tugas. Jika tidak ada tautan, ini kemungkinan karena agen Azure Pipelines. Jika ada tautan, ikuti tautan untuk melihat apakah ada batas waktu yang terjadi dalam penyebaran portal.
Kesalahan: Aturan CORS yang akan diaktifkan saat mengesampingkan parameter
Jika file templat dirujuk dari BLOB, saat utamakan parameter dalam alur, Anda mungkin melihat pesan peringatan berikut:
Warning: Failed to download the file from template path.
Fitur ini mengharuskan aturan CORS diaktifkan di sumbernya. Jika templat berada di blob penyimpanan Azure, lihat Dukungan berbagi sumber daya lintas asal untuk mengaktifkan CORS.
Selain mengaktifkan CORS, pastikan bahwa token SAS yang ditentukan dalam tautan template adalah "srt-sco". Token ini diperlukan bagi Anda untuk mengunduh file dan melanjutkan.
Agen Azure Pipelines
Jika masalah berasal dari agen Azure Pipelines, Anda dapat meningkatkan batas waktu dengan menetapkan timeoutInMinutes sebagai kunci dalam YAML ke 0. Untuk informasi selengkapnya, lihat Menentukan pekerjaan di alur Anda.
Penyebaran Portal
Lihat dokumen ini tentang cara mengidentifikasi apakah kesalahan berasal dari Azure-Portal: Tampilkan riwayat penyebaran dengan Azure Resource Manager.
Dalam kasus penyebaran portal, coba atur "timeoutInMinutes" di template ARM ke "0". Jika tidak ditentukan, nilai yang diasumsikan adalah 60 menit. 0 memastikan penyebaran akan berjalan selama itu bisa berhasil.
Ini juga bisa terjadi karena masalah sementara dalam sistem. https://status.dev.azure.com/ Awasi untuk memeriksa apakah ada downtime dalam layanan Azure Pipelines.
Kesalahan: Templat Azure Resource Manager (ARM) gagal validasi
Masalah ini terjadi terutama karena parameter yang tidak valid dalam template ARM, seperti SKU atau wilayah yang tidak didukung. Jika validasi gagal, periksa pesan kesalahan. Ini harus mengarahkan Anda ke sumber daya dan parameter yang tidak valid.
Masalah ini juga mungkin terjadi karena string multiline. Saat ini, tugas Penyebaran Grup Sumber Daya Azure tidak mendukung string multiline dalam templat ARM atau file JSON parameter.
Selain itu, lihat artikel ini mengenai struktur dan sintaks Template ARM: Pahami struktur dan sintaks template ARM.
Sumber terbuka
Tugas ini Open Source pada GitHub. Umpan balik dan kontribusi diterima.