Membuat dan menggunakan modul Bicep

Selesai

Modul adalah file Bicep independen. Modul biasanya berisi set sumber daya yang disebarkan bersama-sama. Modul dapat digunakan dari templat Bicep lainnya.

Dengan menggunakan modul, Anda dapat menggunakan kembali kode Bicep, dan Anda dapat membuat file Bicep Anda lebih mudah dibaca dan dimengerti karena masing-masing berfokus pada pekerjaan tertentu. Templat utama Anda kemudian menyusun beberapa modul bersama-sama.

Keuntungan modul

Di perusahaan mainan, Anda telah menyediakan sumber daya cloud dengan menggunakan banyak file Bicep individual. Seiring waktu, templat ini berkembang secara signifikan. Sehingga Anda akhirnya memiliki kode monolitik yang sulit dibaca dan dinavigasi, dan bahkan lebih sulit untuk dipertahankan.

Pendekatan ini juga memaksa Anda untuk menduplikasi bagian dari kode saat ingin menggunakannya kembali di templat lain. Saat mengubah sesuatu, Anda perlu mencari dan memperbarui banyak file.

Modul Bicep membantu mengatasi tantangan ini dengan membagi kode Anda menjadi file yang lebih kecil dan lebih mudah dikelola yang dapat direferensikan banyak template. Modul memberi Anda beberapa keuntungan utama.

Dapat digunakan kembali

Setelah membuat modul, Anda dapat menggunakannya kembali dalam beberapa file Bicep, meskipun file tersebut untuk proyek atau beban kerja yang berbeda. Misalnya, saat membuat satu solusi, Anda dapat membuat modul terpisah untuk komponen aplikasi, database, dan sumber daya terkait jaringan. Kemudian, saat mulai mengerjakan proyek lain dengan persyaratan jaringan serupa, Anda dapat menggunakan kembali modul yang relevan.

Diagram that shows a template referencing three modules: application, database, and networking. The networking module is then reused in another template.

Anda bahkan dapat berbagi modul dalam tim, dalam organisasi Anda, atau dengan komunitas Azure. Anda akan mempelajari lebih lanjut tentang berbagi modul Bicep di modul Microsoft Learn di masa mendatang.

Enkapsulasi

Modul membantu Anda menjaga definisi sumber daya terkait bersama-sama. Misalnya, saat menentukan aplikasi Azure Functions, Anda biasanya menyebarkan aplikasi, paket hosting untuk aplikasi, dan akun penyimpanan untuk metadata aplikasi. Ketiga komponen ini didefinisikan secara terpisah, tetapi mewakili pengelompokan sumber daya yang logis, jadi mungkin masuk akal untuk mendefinisikannya sebagai modul.

Dengan begitu, template utama Anda tidak perlu mengetahui detail tentang bagaimana aplikasi fungsi disebarkan. Itulah tanggung jawab modul.

Composability

Setelah membuat satu set modul, Anda dapat menyusunnya bersama. Misalnya, Anda mungkin membuat modul yang menyebarkan jaringan virtual, dan modul lain yang menyebarkan mesin virtual. Anda menentukan parameter dan output untuk setiap modul sehingga dapat mengambil informasi penting dari satu dan mengirimkannya ke yang lain.

Diagram that shows a template referencing two modules and passing the output from one to the parameter of another.

Tip

Sangat membantu untuk menganggap modul Bicep sebagai blok bangunan yang dapat digabungkan dengan berbagai cara untuk mendukung penyebaran Anda.

Fungsi

Terkadang, Anda mungkin perlu menggunakan modul untuk mengakses fungsi tertentu. Misalnya, Anda dapat menggunakan modul dan loop bersama-sama untuk menyebarkan beberapa set sumber daya. Anda juga dapat menggunakan modul untuk menentukan sumber daya pada cakupan yang berbeda dalam satu penyebaran.

Membuat model

Modul adalah file Bicep normal. Anda akan membuatnya seperti yang dilakukan pada file Bicep lainnya.

Umumnya, ini bukan praktik yang baik untuk membuat modul untuk setiap sumber daya yang Anda sebarkan. Modul Bicep yang baik biasanya menentukan beberapa sumber daya terkait. Namun, jika Anda memiliki sumber daya yang kompleks dengan banyak konfigurasi, mungkin masuk akal untuk membuat satu modul untuk merangkum kompleksitas. Pendekatan ini membuat templat utama Anda sederhana dan rapi.

Membagi templat Bicep yang sudah ada menjadi modul

Anda dapat membuat templat Bicep besar dan kemudian memutuskan bahwa templat harus dibagi menjadi modul. Terkadang, tentu jelas bagaimana Anda harus membagi file Bicep yang besar. Anda mungkin memiliki satu set sumber daya yang jelas milik bersama-sama dalam modul. Di lain waktu, tidak mudah untuk menentukan sumber daya yang harus dikelompokkan ke dalam modul.

Penampil visual Bicep dapat membantu Anda menempatkan seluruh file Bicep dalam perspektif. Visualisasi termasuk dalam ekstensi Bicep untuk Visual Studio Code.

Untuk melihat visualizer, buka Visual Studio Code Explorer, pilih dan tahan (atau klik kanan) file Bicep, lalu pilih Buka Visualizer Bicep. Penampil visual menunjukkan representasi grafis dari sumber daya dalam file Bicep Anda. Ini mencakup garis antara sumber daya untuk menunjukkan dependensi yang terdeteksi Bicep.

Anda dapat menggunakan penampil visual untuk membantu Anda membagi file Anda. Pertimbangkan apakah visualisasi menggambarkan setiap kelompok sumber daya. Mungkin masuk akal untuk memindahkan kluster ini ke dalam modul bersama- sama.

Misalnya, pertimbangkan visualisasi berikut untuk file Bicep. Dua set sumber daya yang berbeda ditentukan. Mungkin masuk akal untuk mengelompokkannya ke dalam modul database dan jaringan terpisah.

Modul sarang

Modul dapat mencakup modul lain. Dengan menggunakan teknik berlapis ini, Anda dapat membuat beberapa modul yang menyebarkan kumpulan kecil sumber daya, lalu menyusunnya menjadi modul yang lebih besar yang mendefinisikan topologi sumber daya yang kompleks. Templat menggabungkan potongan ini menjadi artefak yang dapat digunakan.

Tip

Meskipun mungkin untuk menyarangkan beberapa lapisan modul, yang bisa menjadi kompleks. Jika Anda mendapatkan kesalahan atau sesuatu yang lain salah, lebih sulit untuk mencari tahu apa yang perlu diperbaiki saat Anda memiliki banyak lapisan bersarang.

Untuk penyebaran yang kompleks, terkadang masuk akal untuk menggunakan alur penyebaran untuk menyebarkan beberapa templat alih-alih membuat satu templat yang melakukan segalanya dengan bersarang. Anda akan mempelajari lebih lanjut tentang alur penyebaran di modul Microsoft Learn di masa mendatang.

Memilih nama file yang baik

Pastikan untuk menggunakan nama file deskriptif untuk setiap modul. Nama file secara efektif menjadi pengidentifikasi untuk modul. Penting agar rekan Anda dapat memahami tujuan modul hanya dengan melihat nama file.

Menggunakan modul dalam templat Bicep

Anda akan menggunakan modul dalam template Bicep dengan menggunakan kata kunci module, seperti ini:

module appModule 'modules/app.bicep' = {
  name: 'myApp'
  params: {
    location: location
    appServiceAppName: appServiceAppName
    environmentType: environmentType
  }
}

Definisi modul mencakup komponen berikut:

  • Kata kunci module.
  • Nama simbolis, seperti appModule. Nama ini digunakan dalam file Bicep ini kapan pun Anda ingin merujuk ke modul. Nama simbolis tidak pernah muncul di Azure.
  • Jalur modul, seperti modules/app.bicep. Ini biasanya jalur ke file Bicep pada sistem file lokal Anda. Dalam modul Microsoft Learn di masa mendatang, Anda akan mempelajari tentang cara untuk berbagi modul dengan menggunakan pendaftar dan spesifikasi templat, yang memiliki format jalur modul mereka sendiri.

    Tip

    Anda juga dapat menggunakan templat JSON Azure Resource Manager (templat ARM) sebagai modul. Kemampuan ini dapat membantu jika Anda memiliki satu set templat yang belum dimigrasikan ke Bicep.

  • Properti name, yang menentukan nama penyebaran. Anda akan mempelajari lebih lanjut tentang penyebaran di bagian berikutnya.
  • Propertiparams, saat Anda dapat menentukan nilai untuk parameter yang diharapkan modul. Anda akan mempelajari lebih lanjut tentang parameter modul di unit berikutnya.

Cara kerja modul

Memahami cara kerja modul tidak diperlukan untuk menggunakannya, tetapi dapat membantu Anda menyelidiki masalah terkait penyebaran atau membantu menjelaskan perilaku yang tidak terduga.

Penyebaran

Di Azure, penyebaran adalah sumber daya khusus yang mewakili operasi penyebaran. Penyebaran adalah sumber daya Azure yang memiliki Microsoft.Resources/deployments jenis sumber daya. Saat mengirimkan penyebaran Bicep, Anda membuat atau memperbarui sumber daya penyebaran. Demikian pula, saat Anda membuat sumber daya di portal Azure, portal membuat sumber daya penyebaran atas nama Anda.

Namun, tidak semua perubahan pada sumber daya Azure membuat atau menggunakan penyebaran. Misalnya, saat Anda menggunakan portal Microsoft Azure untuk mengubah sumber daya yang ada, portal Microsoft Azure umumnya tidak membuat penyebaran untuk membuat perubahan. Saat Anda menggunakan alat pihak ketiga seperti Terraform untuk menyebarkan atau mengonfigurasi sumber daya Anda, alat tersebut mungkin tidak membuat penyebaran.

Saat Anda menyebarkan file Bicep dengan menggunakan Azure CLI atau Azure PowerShell, Anda dapat menentukan nama penyebaran secara opsional. Jika Anda tidak menentukan nama, Azure CLI atau Azure PowerShell otomatis membuat nama penyebaran untuk Anda dari nama file templat. Misalnya, jika Anda menyebarkan file bernama main.bicep, nama penyebaran default adalah main.

Saat Anda menggunakan modul, Bicep membuat penyebaran terpisah untuk setiap modul. Properti name yang Anda tentukan untuk modul menjadi nama penyebaran. Saat Anda menyebarkan file Bicep yang berisi modul, beberapa sumber daya penyebaran dibuat: satu untuk templat induk dan satu untuk setiap modul.

Misalnya, misalkan Anda membuat file Bicep bernama main.bicep. Ini menentukan modul bernama myApp. Saat Anda menyebarkan file main.bicep, dua penyebaran dibuat. Yang pertama diberi nama main, dan ini membuat penyebaran lain bernama myApp yang berisi sumber daya aplikasi Anda.

Diagram that shows two Bicep files, each of which has a separate deployment name.

Anda dapat membuat daftar dan melihat detail sumber daya penyebaran untuk memantau status penyebaran Bicep Anda atau untuk melihat riwayat penyebaran. Namun, saat Anda menggunakan kembali nama yang sama untuk penyebaran, Azure menimpa penyebaran terakhir dengan nama yang sama. Jika Anda perlu mempertahankan riwayat penyebaran, pastikan untuk menggunakan nama unik untuk setiap penyebaran. Anda dapat menyertakan tanggal dan waktu penyebaran dalam nama untuk membantu membuatnya unik.

Templat JSON ARM yang dibuat

Saat Anda menyebarkan file Bicep, Bicep mengonversinya ke templat JSON ARM. Konversi ini juga disebut transpilasi. Modul yang digunakan templat tertanam ke dalam file JSON. Terlepas dari berapa banyak modul yang Anda sertakan dalam templat, hanya satu file JSON yang akan dibuat.

Dalam contoh yang dibahas di bagian sebelumnya, Bicep membuat satu file JSON meskipun awalnya ada dua file Bicep.

Diagram that shows two Bicep files, which are transpiled into a single JSON file.