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
resourceGroupName
Grup 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
csmFileLink
Tautan 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.
csmParametersFileLink
Tautan 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.
csmFile
Templat
(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.
csmParametersFile
Parameter templat
(Opsional) Tentukan jalur atau pola yang menunjuk ke file parameter untuk templat Resource Manager Azure.
overrideParameters
Mengambil 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" }.
deploymentMode
Mode 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
enableDeploymentPrerequisites
Aktifkan 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
deploymentGroupEndpoint
Azure 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
project
Proyek tim
(Diperlukan) Tentukan proyek Tim yang memiliki Grup Penyebaran yang ditentukan di dalamnya.
Alias argumen: teamProject
deploymentGroupName
Grup Penyebaran
(Diperlukan) Tentukan Grup Penyebaran tempat Agen akan didaftarkan. Untuk panduan selengkapnya, lihat Grup Penyebaran.
copyAzureVMTags
Salin 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.
runAgentServiceAsUser
Menjalankan 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.
userName
Nama 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.
password
Kata 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.
outputVariable
Detail 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.
deploymentName
Nama penyebaran
(Opsional) Menentukan nama penyebaran grup sumber daya untuk dibuat
deploymentOutputs
Output 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.
addSpnToEnvironment
Mengakses 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.