Menjelajahi struktur templat Azure Resource Manager

Selesai

Di unit ini, Anda akan mempelajari tentang menggunakan templat Azure Resource Manager (templat ARM) untuk menerapkan infrastruktur sebagai kode. Anda akan mensurvei bagian templat ARM, mempelajari cara menyebarkan templat ARM Anda ke Azure, dan mempelajari detail tentang bagian sumber daya templat ARM.

Apa itu infrastruktur sebagai kode?

Infrastruktur sebagai kode memungkinkan Anda menjelaskan, melalui kode, infrastruktur yang Anda butuhkan untuk aplikasi Anda.

Dengan infrastruktur sebagai kode, Anda dapat mempertahankan kode aplikasi dan semua yang Anda butuhkan untuk menyebarkan aplikasi dalam repositori kode pusat. Keuntungan dari infrastruktur sebagai kode adalah:

  • Konfigurasi yang konsisten
  • Peningkatan skalabilitas
  • Penyebaran yang lebih cepat
  • Keterlacakan yang lebih baik

Video ini menjelaskan infrastruktur sebagai kode:

Apa itu templat ARM?

Templat ARM adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk penyebaran Anda. Templat menggunakan sintaks deklaratif. Sintaks deklaratif adalah cara membangun struktur dan elemen yang menguraikan seperti apa sumber daya akan terlihat tanpa menjelaskan alur kontrol. Sintaks deklaratif berbeda dengan sintaks imperatif, yang menggunakan perintah untuk dilakukan komputer. Skrip imperatif berfokus pada penentuan setiap langkah dalam menyebarkan sumber daya.

Templat ARM memungkinkan Anda mendeklarasikan apa yang ingin Anda sebarkan tanpa harus menulis urutan perintah pemrograman untuk membuatnya. Dalam templat ARM, Anda menentukan sumber daya dan properti untuk sumber daya tersebut. Azure Resource Manager kemudian menggunakan informasi tersebut untuk menyebarkan sumber daya secara terorganisir dan konsisten.

Manfaat menggunakan templat ARM

Templat ARM memungkinkan Anda mengotomatiskan penyebaran dan menggunakan praktik infrastruktur sebagai kode (IaC). Kode templat menjadi bagian dari proyek infrastruktur dan pengembangan Anda. Seperti kode aplikasi, Anda dapat menyimpan file IaC di repositori sumber dan membuat versinya.

Templat ARM bersifat idempoten, berarti Anda dapat menyebarkan templat yang sama berkali-kali dan mendapatkan jenis sumber daya yang sama dalam status yang sama.

Resource Manager mengatur penyebaran sumber daya sehingga dibuat dalam urutan yang benar. Jika memungkinkan, sumber daya juga akan dibuat secara paralel, sehingga penyebaran templat ARM selesai lebih cepat daripada ketika menggunakan penyebaran berskrip.

Diagram showing a mapping of the template processing procedure. There's only one call to process a template as opposed to several calls to process scripts.

Resource Manager juga memiliki validasi bawaan. Alat ini memeriksa templat sebelum memulai penyebaran untuk memastikan keberhasilan penyebaran.

Jika penyebaran Anda menjadi lebih kompleks, Anda dapat memecah templat ARM menjadi komponen yang lebih kecil dan dapat digunakan kembali. Anda dapat menautkan templat yang lebih kecil ini bersama-sama pada waktu penyebaran. Anda juga dapat melapiskan templat di dalam templat lain.

Di portal Azure, Anda dapat meninjau riwayat penyebaran dan mendapatkan informasi tentang status penyebaran. Portal menampilkan nilai untuk semua parameter dan output.

Anda juga dapat mengintegrasikan templat ARM Anda ke dalam alat integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD) seperti Azure Pipelines, yang dapat mengotomatiskan alur rilis Anda untuk pembaruan aplikasi dan infrastruktur yang cepat dan andal. Dengan menggunakan tugas templat Azure DevOps dan ARM, Anda dapat terus membangun dan menyebarkan proyek Anda.

Struktur file templat ARM

Saat Anda menulis templat ARM, Anda perlu memahami semua bagian yang membentuk templat dan apa yang mereka lakukan. File templat ARM terdiri dari elemen-elemen berikut:

Elemen Deskripsi
skema Bagian wajib yang menentukan lokasi file skema JSON yang menjelaskan struktur data JSON. Nomor versi yang Anda gunakan bergantung pada cakupan penyebaran dan editor JSON Anda.
contentVersion Bagian wajib yang menentukan versi templat Anda (seperti 1.0.0.0). Anda dapat menggunakan nilai ini untuk mendokumentasikan perubahan signifikan dalam templat Anda untuk memastikan penerapan templat yang benar.
apiProfile Bagian opsional yang mendefinisikan kumpulan versi API untuk jenis sumber daya. Anda dapat menggunakan nilai ini untuk menghindari penentuan versi API untuk setiap sumber daya dalam templat.
parameter Bagian opsional tempat Anda menentukan nilai yang diberikan selama penyebaran. Nilai-nilai ini dapat disediakan oleh file parameter, dengan parameter baris perintah, atau di portal Azure.
variabel Bagian opsional tempat Anda menentukan nilai yang digunakan untuk menyederhanakan ekspresi bahasa templat.
fungsi Bagian opsional tempat Anda dapat menentukan fungsi yang ditentukan pengguna yang tersedia di dalam templat. Fungsi yang ditentukan pengguna dapat menyederhanakan templat Anda pada saat ekspresi rumit digunakan berulang-ulang dalam templat Anda.
sumber daya Bagian wajib yang menentukan item aktual yang ingin Anda sebarkan atau perbarui dalam grup sumber daya atau langganan.
output Bagian opsional tempat Anda menentukan nilai yang akan ditampilkan di akhir penyebaran.

Menyebarkan templat ARM ke Azure

Anda dapat menyebarkan templat ARM ke Azure dengan salah satu cara berikut:

  • Menyebarkan templat lokal
  • Menyebarkan templat tertaut
  • Menyebarkan dalam alur penyebaran berkelanjutan

Modul ini berfokus pada penyebaran templat ARM lokal. Dalam modul Pelajari mendatang, Anda akan mempelajari cara menyebarkan infrastruktur yang lebih rumit dan cara terintegrasi dengan Azure Pipelines.

Untuk menyebarkan templat lokal, Anda harus menginstal Azure PowerShell atau Azure CLI secara lokal.

Pertama, masuk ke Azure menggunakan Azure CLI atau Azure PowerShell.

az login

Selanjutnya, tentukan grup sumber daya Anda. Anda dapat menggunakan grup sumber daya yang sudah ditentukan atau membuat yang baru dengan perintah berikut. Anda dapat memperoleh nilai lokasi yang tersedia dari: az account list-locations (CLI) atau Get-AzLocation (PowerShell). Anda dapat mengonfigurasi lokasi default menggunakan az configure --defaults location=<location>.

az group create \
  --name {name of your resource group} \
  --location "{location}"

Untuk memulai penyebaran templat di grup sumber daya, gunakan perintah Azure CLI az deployment group create atau perintah Azure PowerShell New-AzResourceGroupDeployment.

Tip

Perbedaan antara az deployment group create dan adalah bahwa az group deployment create adalah perintah lama yang tidak digunakan lagi dan akan digantikan oleh az deployment group createaz group deployment create . Oleh karena itu, sebaiknya gunakan az deployment group create untuk menyebarkan sumber daya di bawah cakupan grup sumber daya.

Kedua perintah memerlukan grup sumber daya, wilayah, dan nama penyebaran sehingga Anda dapat dengan mudah mengidentifikasinya dalam riwayat penyebaran. Untuk kenyamanan, latihan membuat variabel yang menyimpan jalur ke file templat. Variabel ini memudahkan Anda menjalankan perintah penyebaran, karena Anda tidak perlu mengetik ulang jalur setiap kali Anda menyebarkan. Berikut contohnya:

Untuk menjalankan perintah penyebaran ini, Anda harus memiliki Azure CLI versi terbaru.

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name blanktemplate \
  --resource-group myResourceGroup \
  --template-file $templateFile

Gunakan templat tertaut untuk menyebarkan solusi kompleks. Anda dapat memecah templat menjadi banyak templat dan menyebarkan templat ini melalui templat utama. Saat Anda menyebarkan templat utama, templat tersebut memicu penyebaran templat yang ditautkan. Anda dapat menyimpan dan mengamankan templat tertaut menggunakan token SAS.

Alur CI/CD mengotomatiskan pembuatan dan penyebaran proyek pengembangan, yang mencakup proyek templat ARM. Dua alur paling umum yang digunakan untuk penyebaran templat adalah Azure Pipelines atau GitHub Actions.

Informasi lebih lanjut tentang dua jenis penyebaran ini dibahas dalam modul lain.

Menambahkan sumber daya ke templat

Untuk menambahkan sumber daya ke templat, Anda harus mengetahui penyedia sumber daya dan jenis sumber dayanya. Sintaks untuk kombinasi ini adalah dalam bentuk {resource-provider}/{resource-type}. Misalnya, untuk menambahkan sumber daya akun penyimpanan ke templat, Anda memerlukan penyedia sumber daya Microsoft.Storage. Salah satu jenis untuk penyedia ini adalah storageAccount. Sehingga jenis sumber daya Anda akan ditampilkan sebagai Microsoft.Storage/storageAccounts. Anda dapat menggunakan daftar penyedia sumber daya untuk layanan Azure untuk menemukan penyedia yang Anda butuhkan.

Setelah menentukan jenis penyedia dan sumber daya, Anda perlu memahami properti untuk setiap jenis sumber daya yang ingin digunakan. Untuk detailnya, lihat Menentukan sumber daya dalam templat Azure Resource Manager. Menampilkan daftar di kolom kiri untuk menemukan sumber daya. Perhatikan bahwa properti diurutkan berdasarkan versi API.

Screenshot of a Microsoft documentation page showing the storage account documentation selected.

Berikut ini contoh beberapa properti yang tercantum dari halaman Akun Penyimpanan:

Screenshot of a Microsoft documentation page showing some of the storage account properties.

Untuk contoh penyimpanan kami, templat Anda mungkin terlihat seperti ini:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}