Apa itu templat ARM?

Dengan pindah ke cloud, banyak tim telah mengadopsi metode pengembangan yang lincah. Tim-tim ini melakukan iterasi dengan cepat. Mereka perlu berulang kali menyebarkan solusi mereka ke cloud, dan menegtahui infrastruktur mereka dalam keadaan yang dapat diandalkan. Karena infrastruktur telah menjadi bagian dari proses iteratif, pembagian antara operasi dan pembangunan telah menghilang. Tim perlu mengelola infrastruktur dan kode aplikasi melalui proses terpadu.

Untuk memenuhi tantangan ini, Anda dapat mengotomatiskan penyebaran dan menggunakan praktik infrastruktur sebagai kode. Dalam kode, Anda mendefinisikan infrastruktur yang perlu diterapkan. Kode infrastruktur menjadi bagian dari proyek Anda. Sama seperti kode aplikasi, Anda menyimpan kode infrastruktur di repositori sumber dan membuat versinya. Setiap orang di tim Anda dapat menjalankan kode dan menyebarkan lingkungan yang sama.

Untuk menerapkan infrastruktur sebagai kode untuk solusi Azure Anda, gunakan templat Azure Resource Manager (templat ARM). Templat adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Templat tersebut menggunakan sintaksis deklaratif, yang memungkinkan Anda menyatakan apa yang ingin Anda sebarkan tanpa harus menulis urutan perintah pemrograman untuk membuatnya. Dalam templat, Anda menentukan sumber daya untuk digunakan dan properti untuk sumber daya tersebut.

Kami telah memperkenalkan bahasa komputer baru bernama Bicep yang digunakan untuk mengembangkan templat ARM JSON. File Bicep dan templat JSON menawarkan kemampuan yang sama. Anda dapat mengonversi templat antara dua bahasa komputer. Bicep menyediakan sintaks yang lebih mudah digunakan untuk membuat templat. Untuk informasi selengkapnya, lihat Apa itu Bicep?.

Untuk mempelajari tentang bagaimana Anda bisa mulai menggunakan templat ARM, lihat video berikut ini.

Mengapa memilih templat ARM?

Jika Anda mencoba memutuskan antara menggunakan templat ARM dan salah satu infrastruktur lainnya sebagai layanan kode, pertimbangkan keuntungan menggunakan templat berikut ini:

  • Sintaks deklaratif: Templat ARM memungkinkan Anda untuk membuat dan menerapkan seluruh infrastruktur Azure secara deklaratif. Misalnya, Anda tidak hanya dapat menyebarkan komputer virtual, tapi juga infrastruktur jaringan, sistem penyimpanan, dan sumber daya lain yang mungkin dibutuhkan.

  • Hasil yang dapat diulang: Berulang kali menyebarkan infrastruktur Anda sepanjang siklus hidup pengembangan dan memiliki keyakinan sumber daya Anda digunakan secara konsisten. Template idempoten, yang berarti Anda dapat menggunakan templat yang sama berkali-kali dan mendapatkan jenis sumber daya yang sama dalam keadaan yang sama. Anda dapat mengembangkan satu template yang mewakili keadaan yang diinginkan, daripada mengembangkan banyak templat terpisah untuk mewakili pembaruan.

  • Orkestrasi: Anda tidak perlu khawatir tentang kompleksitas pemesanan operasi. Resource Manager mengatur penyebaran sumber daya yang saling diperlukan sehingga dibuat dalam urutan yang benar. Jika memungkinkan, Resource Manager menerapkan sumber daya secara paralel sehingga penyebaran Anda selesai lebih cepat daripada penyebaran serial. Anda menerapkan templat melalui satu perintah, bukan melalui beberapa perintah penting.

    Perbandingan penyebaran templat

  • File modular: Anda dapat memutus template Anda menjadi komponen yang lebih kecil dan dapat digunakan kembali dan menautkannya bersama-sama pada waktu penyebaran. Anda juga dapat menyarangkan satu templat di dalam templat lain.

  • Membuat sumber daya Azure apa pun: Anda dapat segera menggunakan layanan dan fitur Azure baru dalam templat. Segera setelah penyedia sumber daya memperkenalkan sumber daya baru, Anda dapat menyebarkan sumber daya tersebut melalui templat. Anda tidak perlu menunggu alat atau modul diperbarui sebelum menggunakan layanan baru.

  • Ekstensibilitas: Dengan skrip penyebaran, Anda dapat menambahkan skrip PowerShell atau Bash ke templat Anda. Skrip penyebaran memperluas kemampuan Anda untuk menyiapkan sumber daya selama penyebaran. Skrip dapat disertakan dalam templat, atau disimpan dalam sumber eksternal dan direferensikan dalam templat. Skrip penerapan memberi Anda kemampuan untuk menyelesaikan penyiapan lingkungan end-to-end Anda dalam satu template ARM.

  • Pengujian: Anda dapat memastikan template Anda mengikuti pedoman yang direkomendasikan dengan mengujinya dengan peralatan template ARM (lengan-ttk). Alat pengujian ini adalah skrip PowerShell yang dapat Anda unduh dari GitHub. Peralatan tersebut memudahkan Anda untuk mengembangkan keahlian menggunakan bahasa pemorgraman template.

  • Perubahan pratinjau: Anda dapat menggunakan operasi bagaimana-jika untuk mendapatkan pratinjau perubahan sebelum menyebarkan templat. Dengan bagaimana jika, Anda melihat sumber daya mana yang akan dibuat, diperbarui, atau dihapus, dan properti sumber daya apa pun yang akan diubah. Operasi bagaimana-jika memeriksa kondisi lingkungan Anda saat ini dan menghilangkan kebutuhan untuk mengelola status.

  • Validasi bawaan: Template Anda hanya digunakan setelah melewati validasi. Resource Manager memeriksa templat sebelum memulai penyebaran untuk memastikan penyebaran akan berhasil. Penyebaran Anda cenderung tidak berhenti dalam keadaan setengah jadi.

  • Penyebaran terlacak: Di portal Microsoft Azure, Anda dapat meninjau riwayat penyebaran dan mendapatkan informasi tentang penyebaran templat. Anda dapat melihat templat yang digunakan, nilai parameter yang dilewatkan, dan nilai output apa pun. Infrastruktur lain sebagai layanan kode tidak dilacak melalui portal.

    Riwayat penerapan

  • Kebijakan sebagai kode: Azure Policy adalah kebijakan sebagai kerangka kode untuk mengotomatiskan kerangka kerja. Jika Anda menggunakan kebijakan Azure, remediasi kebijakan dilakukan pada sumber daya yang tidak mematuhi saat digunakan melalui templat.

  • Cetak Biru Penggunaan: Anda dapat memanfaatkan Cetak biru yang disediakan oleh Microsoft untuk memenuhi standar peraturan dan kepatuhan. Cetak biru ini termasuk templat siap pakai untuk berbagai arsitektur.

  • Integrasi CI/CD: Anda dapat mengintegrasikan templat ke dalam alat integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD), yang dapat mengotomatiskan alur rilis Anda untuk pembaruan aplikasi dan infrastruktur yang cepat dan andal. Dengan menggunakan tugas templat Azure DevOps dan Resource Manager, Anda dapat menggunakan Azure Pipelines untuk terus membangun dan menerapkan proyek templat ARM. Untuk mempelajari lebih lanjut, proyek VS dengan alur dan Tutorial: Integrasi berkelanjutan templat Azure Resource Manager dengan Azure Pipelines.

  • Kode yang dapat diekspor: Anda bisa mendapatkan templat untuk grup sumber daya yang ada dengan mengekspor status grup sumber daya saat ini, atau melihat templat yang digunakan untuk penyebaran tertentu. Menampilkan templat yang diekspor adalah cara yang bermanfaat untuk mempelajari sintaks templat.

  • Alat penyusunan penulisan: Anda dapat menulis template dengan Visual Studio Code dan ekstensi alat templat. Anda mendapatkan intellisense, penyorotan sintaksis, bantuan sejajar, dan banyak fungsi lainnya. Selain Visual Studio Code, Anda juga dapat menggunakan Visual Studio.

File templat

Dalam templat Anda, Anda dapat menulis ekspresi templat yang memperluas kemampuan JSON. Ekspresi ini menggunakan fungsi yang disediakan oleh Resource Manager.

Templat tersebut memiliki bagian berikut:

  • Parameter - Menyediakan nilai selama penyebaran yang memungkinkan template yang sama digunakan dengan lingkungan yang berbeda.

  • Variabel - Menentukan nilai yang digunakan kembali di templat Anda. Mereka dapat dibangun dari nilai parameter.

  • Fungsi yang ditentukan pengguna - Membuat fungsi yang dikustomisasi yang menyederhanakan templat Anda.

  • Sumber Daya - Menentukan sumber daya yang akan digunakan.

  • Output - Mengembalikan nilai dari sumber daya yang diterapkan.

Proses penyebaran templat

Saat Anda menerapkan template, Resource Manager mengonversi template menjadi operasi REST API. Misalnya, saat Resource Manager menerima templat dengan definisi sumber daya berikut:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-04-01",
    "name": "mystorageaccount",
    "location": "westus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2",
    "properties": {}
  }
]

Templat ini mengonversi definisi ke operasi REST API berikut, yang dikirim ke penyedia sumber daya Microsoft.Storage:

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2019-04-01
REQUEST BODY
{
  "location": "westus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

Perhatikan bahwa apiVersion yang Anda tetapkan dalam template untuk resource digunakan sebagai versi API untuk operasi REST. Anda dapat berulang kali menyebarkan template dan memiliki keyakinan itu akan terus berfungsi. Dengan menggunakan versi API yang sama, Anda tidak perlu khawatir memutuskan perubahan yang mungkin diperkenalkan di versi yang lebih baru.

Untuk menggunakan templat, gunakan salah satu opsi berikut ini:

Desain templat

Bagaimana Anda mendefinisikan templat dan grup sumber daya sepenuhnya terserah Anda dan bagaimana Anda ingin mengelola solusi Anda. Misalnya, Anda dapat menerapkan aplikasi tiga tingkat Anda melalui satu template ke satu grup sumber daya.

templat tiga tingkat

Tapi, Anda tidak perlu mendefinisikan seluruh infrastruktur Anda dalam satu templat. Seringkali, masuk akal untuk membagi persyaratan penyebaran Anda menjadi seperangkat templat yang ditargetkan dan bertujuan khusus. Anda dapat dengan mudah menggunakan kembali template ini untuk solusi yang berbeda. Untuk menerapkan solusi tertentu, Anda membuat template utama yang menautkan semua templat yang diperlukan. Gambar berikut ini memperlihatkan cara menggunakan solusi tiga tingkat melalui templat induk yang menyertakan tiga templat berlapis.

templat tingkatan berlapis

Jika Anda membayangkan tingkatan Anda memiliki siklus hidup terpisah, Anda dapat menerapkan tiga tingkatan Anda untuk memisahkan grup sumber daya. Perhatikan sumber daya masih dapat ditautkan ke sumber daya di grup sumber daya lain.

templat tingkat

Untuk informasi tentang templat berlapis, lihat Menggunakan templat tertaut dengan Azure Resource Manager.

Berbagi templat

Setelah membuat templat, Anda mungkin ingin membagikannya dengan pengguna lain di organisasi Anda. Spesifikasi templat memungkinkan Anda untuk menyimpan templat sebagai jenis sumber daya. Anda menggunakan kontrol akses berbasis peran untuk mengelola akses ke spesifikasi templat. Pengguna dengan akses baca ke spesifikasi templat dapat menyebarkannya, tetapi tidak dapat mengubah templat.

Pendekatan ini berarti Anda dapat berbagi templat dengan aman yang memenuhi standar organisasi Anda.

Langkah berikutnya