Bagikan melalui


Tugas DevOps layanan Azure VM Image Builder (pratinjau)

Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel

Dalam artikel ini, Anda mempelajari cara menggunakan tugas Azure DevOps untuk menyuntikkan artefak build ke dalam gambar mesin virtual (VM), sehingga Anda dapat menginstal dan mengonfigurasi aplikasi dan sistem operasi Anda.

Penting

Tugas Azure DevOps untuk VM Image Builder saat ini dalam PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.

Versi Tugas DevOps

Saat ini, ada dua tugas Azure VM Image Builder DevOps:

Prasyarat

Catatan

Tugas VM Image Builder saat ini tidak mendukung Windows Restart atau menjalankan perintah yang ditinggikan sebagai Administrator. Artinya, tugas ini tidak cocok untuk skenario Azure Virtual Desktop atau kustomisasi Windows yang memerlukan fitur tersebut. Untuk menggunakan DevOps dengan VM Image Builder, susun templat dalam tugas Azure Resource Manager, dan gunakan tugas Azure CLI atau PowerShell.

Sebelum memulai, Anda harus:

  • Instal tugas Stabil DevOps dari Visual Studio Marketplace.

  • Memiliki akun Azure DevOps Services (sebelumnya Visual Studio Team Services, atau VSTS), dan Build Pipeline dibuat.

  • Daftarkan dan aktifkan persyaratan fitur VM Image Builder dalam langganan yang digunakan oleh alur:

  • Buat akun penyimpanan Azure standar di grup sumber daya gambar sumber. Anda dapat menggunakan grup sumber daya atau akun penyimpanan lainnya. Akun penyimpanan digunakan mentransfer membangun artefak dari tugas Azure DevOps ke gambar.

    # Azure PowerShell
    $timeInt=$(get-date -UFormat "%s")
    $storageAccName="aibstorage"+$timeInt
    $location=westus
    # Create a storage account and blob in the resource group
    New-AzStorageAccount -ResourceGroupName $strResourceGroup -Name $storageAccName -Location $location -SkuName Standard_LRS
    
    # The Azure CLI
    location=westus
    scriptStorageAcc=aibstordot$(date +'%s')
    # Create a storage account and blob in the resource group
    az storage account create -n $scriptStorageAcc -g $strResourceGroup -l $location --sku Standard_LRS
    

Menambahkan tugas ke alur rilis

  1. Pilih Rilis Alur>Edit.

  2. Pada Agen Pengguna, pilih tanda plus (+) untuk menambahkan dan mencari Image Builder.

  3. Pilih Tambahkan.

Di bagian berikut, atur properti tugas.

Langganan Azure

Di daftar drop-down, pilih langganan yang Anda inginkan untuk dijalankan VM Image Builder. Gunakan langganan tempat gambar sumber Anda disimpan dan gambar akan didistribusikan. Anda perlu memberi kontributor VM Image Builder akses ke langganan atau grup sumber daya.

Grup sumber daya

Gunakan grup sumber daya tempat artefak templat gambar sementara akan disimpan. Saat Anda membuat artefak template, grup sumber daya VM Image Builder sementara lainnya, IT_<DestinationResourceGroup>_<TemplateName>_guid, akan dibuat. Grup sumber daya sementara menyimpan metadata gambar, seperti skrip. Di akhir tugas, artefak template gambar dan grup sumber daya VM Image Builder sementara akan dihapus.

Lokasi

Lokasi adalah wilayah tempat VM Image Builder akan dijalankan. Hanya sejumlah wilayahyang didukung. Gambar sumber harus ada di lokasi ini. Misalnya, jika Anda menggunakan Azure Compute Gallery (sebelumnya Shared Image Gallery), sebuah replika harus ada di wilayah tersebut.

Identitas terkelola (diperlukan)

VM Image Builder memerlukan identitas terkelola, yang digunakan untuk membaca gambar kustom sumber, menyambungkan ke Azure Storage, dan membuat gambar kustom. Untuk informasi selengkapnya, lihat Pelajari tentang VM Image Builder.

Dukungan jaringan virtual

Anda dapat mengonfigurasi VM yang dibuat untuk berada di jaringan virtual tertentu. Saat Anda mengonfigurasi tugas, berikan ID sumber daya dari subnet yang sudah ada sebelumnya di bidang masukan Konfigurasi VNet (Opsional). Abaikan ID sumber daya jika tidak ada jaringan virtual tertentu yang perlu digunakan. Untuk informasi lebih lanjut, lihat Opsi jaringan layanan Azure VM Image Builder.

Sumber

Gambar sumber harus dari sistem operasi VM Image Builder yang didukung. Anda dapat memilih gambar khusus yang ada di wilayah yang sama dengan tempat VM Image Builder dijalankan:

  • Gambar Terkelola: Teruskan ID sumber daya. Contohnya:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
    
  • Galeri Komputasi: Berikan ID sumber daya versi gambar. Contohnya:

    /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/<versionNumber>
    

    Jika Anda perlu mendapatkan versi Compute Gallery terbaru, gunakan tugas Azure PowerShell atau Azure CLI untuk mendapatkannya dan mengatur variabel DevOps. Gunakan variabel dalam tugas VM Image Builder DevOps. Untuk informasi selengkapnya, lihat contoh di Mendapatkan ID sumber daya versi gambar terbaru.

  • (Marketplace) Gambar dasar: Gunakan daftar dropdown gambar populer, yang selalu menggunakan versi terbaru dari sistem operasi yang didukung.

    Jika gambar dasar tidak ada dalam daftar, Anda dapat menentukan gambar yang tepat dengan menggunakan Publisher:Offer:Sku.

    (Opsional) Versi gambar dasar: Anda dapat menyediakan versi gambar yang ingin Anda gunakan. Versi defaultnya adalah latest.

Menyesuaikan

Bagian berikut membahas berbagai cara untuk mengustomisasi tugas.

Penyedia

Awalnya, dua penyesuai didukung, Shell dan PowerShell. Hanya sebaris yang didukung. Jika Anda ingin mengunduh skrip, Anda dapat mengirimkan perintah sebaris untuk melakukannya.

Untuk sistem operasi Anda, pilih PowerShell atau Shell.

Tugas Windows Update

Untuk Windows saja, tugas menjalankan Windows Update di akhir kustomisasi. Ini juga menangani reboot yang diperlukan.

Tugas menjalankan konfigurasi Windows Update berikut ini:

    "type": "WindowsUpdate",
    "searchCriteria": "IsInstalled=0",
    "filters": [
        "exclude:$_.Title -like '*Preview*'",
        "include:$true"

Tugas menginstal Windows Update yang penting dan disarankan yang bukan versi pratinjau.

Menangani reboot

Tugas DevOps saat ini tidak mendukung reboot build Windows. Jika Anda mencoba me-reboot dengan kode PowerShell, build gagal. Namun, Anda dapat menggunakan kode untuk me-boot ulang membangunLinux.

Membangun jalur

Tugas ini dirancang untuk dapat menyuntikkan artefak membangun rilis Azure DevOps ke dalam gambar. Untuk membuat ini berhasil, Anda perlu mengatur membangun alur. Dalam penyiapan pipeline rilis, tambahkan repo artefak build.

Cuplikan layar yang menunjukkan cara menambahkan artefak di saluran rilis.

Pilih tombol Bangun Jalur untuk memilih folder build yang ingin Anda tempatkan pada gambar. Tugas VM Image Builder menyalin semua file dan direktori di dalamnya. Saat gambar sedang dibuat, VM Image Builder menyebarkan file dan direktori ke jalur yang berbeda, tergantung pada sistem operasinya.

Penting

Saat menambahkan artefak repositori, Anda mungkin menemukan bahwa nama direktori diawali dengan karakter garis bawah (_). Garis bawah dapat menyebabkan masalah dengan perintah sebaris. Pastikan untuk menggunakan tanda kutip yang sesuai dalam perintah.

Contoh berikut menjelaskan cara kerjanya:

Cuplikan layar struktur direktori yang menunjukkan hierarki.

  • Untuk Windows: File ada di drive C:. Direktori bernama buildArtifacts dibuat, yang mencakup direktori webapp.

  • Untuk Linux: File ada di /tmp direktori. webapp Direktori dibuat, yang mencakup semua file dan direktori. Karena ini adalah direktori sementara, Anda harus memindahkan file dari direktori tersebut. Jika tidak, direktori akan dihapus.

Skrip kustomisasi sebaris

  • Untuk Windows: Anda dapat memasukkan perintah sebaris PowerShell, dipisahkan dengan koma. Jika ingin menjalankan skrip dibangun direktori Anda, Anda dapat menggunakan:

    & 'c:\buildArtifacts\webapp\webconfig.ps1'
    

    Anda dapat mereferensikan beberapa skrip atau menambahkan lebih banyak perintah. Contohnya:

    & 'c:\buildArtifacts\webapp\webconfig.ps1'
    & 'c:\buildArtifacts\webapp\installAgent.ps1'
    
  • Untuk Linux: Artefak build dimasukkan ke dalam direktori /tmp. Namun, pada banyak sistem operasi Linux, saat reboot, konten direktori /tmp akan dihapus. Jika Anda ingin artefak ada dalam gambar, Anda harus membuat direktori lain dan menyalinnya. Contohnya:

    sudo mkdir /lib/buildArtifacts
    sudo cp -r "/tmp/_ImageBuilding/webapp" /lib/buildArtifacts/.
    

    Jika Anda OK dengan menggunakan direktori /tmp, Anda dapat menjalankan skrip dengan menggunakan kode berikut:

    # Grant execute permissions to run scripts
    sudo chmod +x "/tmp/_ImageBuilding/webapp/coreConfig.sh"
    echo "running script"
    sudo . "/tmp/AppsAndImageBuilderLinux/_WebApp/coreConfig.sh"
    

Apa yang terjadi pada membangun artefak setelah membangun gambar?

Catatan

VM Image Builder tidak secara otomatis menghapus artefak build. Kami sangat menyarankan agar Anda selalu menggunakan kode untuk menghapus artefak build.

  • Untuk Windows: VM Image Builder menyebarkan file ke direktori C:\buildArtifacts. Karena direktori tetap ada, Anda harus menghapusnya dengan menjalankan skrip. Contohnya:

    # Clean up buildArtifacts directory
    Remove-Item -Path "C:\buildArtifacts\*" -Force -Recurse
    
    # Delete the buildArtifacts directory
    Remove-Item -Path "C:\buildArtifacts" -Force
    
  • Untuk Linux: Artefak build dimasukkan ke dalam direktori /tmp. Namun, pada banyak sistem operasi Linux, konten direktori /tmp dihapus saat reboot. Kami menyarankan Anda menggunakan kode untuk menghapus konten dan tidak bergantung pada sistem operasi untuk menghapus konten. Contohnya:

    sudo rm -R "/tmp/AppsAndImageBuilderLinux"
    

Total panjang bangun gambar

Panjang total belum dapat diubah dalam tugas alur DevOps. Ini menggunakan default 240 menit. Jika Anda ingin meningkatkan buildTimeoutInMinutes, Anda dapat menggunakan tugas Azure CLI di jalur rilis. Mengonfigurasi tugas untuk menyalin templat dan mengirimkannya. Untuk contoh solusi, lihat Menggunakan variabel dan parameter lingkungan dengan VM Image Builder, atau menggunakan Azure PowerShell.

Akun Penyimpanan

Pilih akun penyimpanan yang Anda buat di prasyarat. Jika Anda tidak melihatnya dalam daftar, Azure VM Image Builder tidak memiliki izin untuk itu.

Saat build dimulai, VM Image Builder membuat kontainer yang disebut imagebuilder-vststask, tempat artefak build dari repositori disimpan.

Catatan

Anda perlu menghapus akun penyimpanan atau kontainer secara manual setelah setiap bangun.

Distribusikan

Tiga jenis distribusi berikut didukung.

Gambar terkelola

  • ID sumber daya:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
    
  • Lokasi

Galeri Komputasi harus sudah ada.

  • ID sumber daya:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>
    
  • Wilayah: Daftar wilayah, dipisahkan koma. Misalnya,westus, eastus, centralus.

Hard disk virtual

Anda tidak dapat meneruskan nilai apa pun ke ini. VM Image Builder memancarkan VHD hard disk virtual ke grup sumber daya VM Image Builder sementara, IT_<DestinationResourceGroup>_<TemplateName>, dalam kontainer vhds. Saat Anda memulai build rilis, VM Image Builder mengeluarkan log. Saat VM Image Builder selesai, VM Image Builder memancarkan URL VHD.

Pengaturan opsional

Anda dapat mengganti pengaturan Ukuran VM dari ukuran default Standard_D1_v2. Anda mungkin ingin melakukannya untuk mengurangi total waktu kustomisasi. Atau Anda mungkin ingin membuat gambar yang bergantung pada ukuran VM tertentu, seperti GPU (unit pemrosesan grafis), HPC (komputasi berperforma tinggi), dan sebagainya.

Cara kerja tugas

Ketika Anda buat rilis, tugas membuat kontainer di akun penyimpanan, bernama imagebuilder-vststask. Ini zip (kompres) dan mengunggah artefak build Anda dan membuat token tanda tangan akses bersama untuk file zip.

Tugas menggunakan properti yang diteruskan ke tugas untuk membuat artefak templat VM Image Builder. Tugas melakukan hal berikut:

  • Mengunduh file zip membangun artefak dan skrip terkait lainnya. File disimpan dalam akun penyimpanan di grup sumber daya VM Image Builder sementara IT_<DestinationResourceGroup>_<TemplateName>.

  • Membuat templat yang diawali dengan t_ dan bilangan bulat monoton 10 digit. Templat disimpan ke grup sumber daya yang Anda pilih, dan ada selama durasi build dalam grup sumber daya.

Contoh output:

start reading task parameters...
found build at:  /home/vsts/work/r1/a/_ImageBuilding/webapp
end reading parameters
getting storage account details for aibstordot1556933914
created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
template name:  t_1556938436xxx
starting put template...

Saat membangun gambar dimulai, status jalankan dilaporkan dalam log rilis:

starting run template...

Saat pembuatan gambar selesai, hasilnya mirip dengan teks berikut:

2019-05-06T12:49:52.0558229Z starting run template...
2019-05-06T13:36:33.8863094Z run template:  Succeeded
2019-05-06T13:36:33.8867768Z getting runOutput for  SharedImage_distribute
2019-05-06T13:36:34.6652541Z ==============================================================================
2019-05-06T13:36:34.6652925Z ## task output variables ##
2019-05-06T13:36:34.6658728Z $(imageUri) =  /subscriptions/<subscriptionID>/resourceGroups/aibwinsig/providers/Microsoft.Compute/galleries/my22stSIG/images/winWAppimages/versions/0.23760.13763
2019-05-06T13:36:34.6659989Z ==============================================================================
2019-05-06T13:36:34.6663500Z deleting template t_1557146959485...
2019-05-06T13:36:34.6673713Z deleting storage blob imagebuilder-vststask\webapp/18-1/webapp_1557146958741.zip
2019-05-06T13:36:34.9786039Z blob imagebuilder-vststask\webapp/18-1/webapp_1557146958741.zip is deleted
2019-05-06T13:38:37.4884068Z delete template:  Succeeded

Kerangka gambar dan IT_<DestinationResourceGroup>_<TemplateName> dihapus.

Anda dapat mengambil $(imageUri) variabel Azure DevOps Services (sebelumnya Visual Studio Team Services, atau VSTS) dan menggunakannya di tugas berikutnya atau hanya menggunakan nilai dan membangun VM.

Variabel DevOps output

Berikut adalah penerbit, penawaran, SKU, dan versi gambar marketplace sumber:

  • $(pirPublisher)
  • $(pirOffer)
  • $(pirSku)
  • $(pirVersion)

Berikut adalah URI gambar, yang merupakan ID sumber daya dari gambar terdistribusi:

  • $(imageUri)

FAQ

Dapatkah saya menggunakan templat gambar yang sudah ada yang telah saya buat, di luar DevOps?

Tidak untuk saat ini.

Bisakah saya menentukan nama templat gambar?

Tidak. Nama templat unik digunakan lalu dihapus.

Tugas VM Image Builder gagal. Bagaimana cara mengatasi masalah ini?

Jika ada kegagalan build, tugas DevOps tidak menghapus grup sumber daya penahapan. Anda dapat mengakses grup sumber daya pementasan yang berisi log kustomisasi build.

Anda akan melihat kesalahan di log DevOps untuk tugas VM Image Builder, dan pesan akan berisi lokasi customization.log. Contohnya:

Cuplikan layar contoh kesalahan tugas DevOps yang menjelaskan kegagalan dan menyediakan lokasi file kustomisasi.log.

Untuk informasi selengkapnya, lihat Memecahkan masalah layanan VM Image Builder.

Setelah Anda menyelidiki kegagalan, Anda dapat menghapus grup sumber daya penahapan. Pertama, hapus artefak sumber daya templat VM Image Builder. Artefak diawali dengan t_, dan Anda dapat menemukannya di log pembuatan tugas DevOps:

...
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
...
template name:  t_1556938436xxx
...

Artefak sumber daya template VM Image Builder berada di grup sumber daya yang ditentukan pada awalnya dalam tugas. Setelah Anda selesai memecahkan masalah, hapus artefak. Jika Anda menghapusnya dengan menggunakan portal Azure, dalam grup sumber daya, pilih Tampilkan Jenis Tersembunyi untuk melihat artefak.

Langkah berikutnya

Untuk informasi selengkapnya, lihat Ikhtisar Pembuat Gambar VM.