Menyebarkan alur kerja Azure Logic Apps menggunakan templat Azure Resource Manager

Selesai

Jika Anda telah menggunakan Azure untuk sementara waktu, Anda mungkin pernah mendengar tentang Azure Resource Manager. Mari kita tinjau peran Resource Manager dan tentukan apa yang membentuk templat Resource Manager.

Apa itu Azure Resource Manager?

Azure Resource Manager adalah antarmuka untuk mengelola dan mengatur sumber daya cloud. Misalnya Resource Manager sebagai cara untuk menyebarkan sumber daya cloud.

Jika Anda terbiasa dengan grup sumber daya Azure, Anda tahu bahwa mereka memungkinkan Anda memperlakukan sekumpulan sumber daya terkait sebagai satu unit. Resource Manager adalah yang mengatur grup sumber daya yang memungkinkan Anda menyebarkan, mengelola, dan menghapus semua sumber daya bersama-sama dalam satu tindakan.

Pikirkan tentang model keuangan yang Anda jalankan untuk analis Anda. Untuk menjalankan model, Anda mungkin memerlukan satu atau beberapa VM, database untuk menyimpan data, dan jaringan virtual untuk mengaktifkan konektivitas di antara semuanya. Dengan Resource Manager, Anda dapat menyebarkan aset ini ke dalam grup sumber daya yang sama dan mengelola dan memantaunya bersama-sama. Setelah selesai, Anda dapat menghapus semua sumber daya dalam grup sumber daya dalam satu operasi.

Apa itu templat Azure Resource Manager?

Templat Resource Manager secara tepat menentukan semua sumber daya Resource Manager dalam sebuah penyebaran. Anda dapat menyebarkan templat Resource Manager ke dalam grup sumber daya sebagai satu operasi.

Templat Resource Manager adalah file JSON, yang menjadikan templat sebagai bentuk otomatisasi deklaratif. Otomatisasi deklaratif berarti Anda menentukan sumber daya apa yang dibutuhkan, tetapi bukan cara membuatnya. Dengan kata lain, Anda menentukan apa yang Anda butuhkan, tetapi Resource Manager harus memastikan bahwa sumber daya digunakan dengan benar.

Anda dapat memikirkan otomatisasi deklaratif yang mirip dengan bagaimana browser web menampilkan file HTML. File HTML menjelaskan elemen apa yang muncul di halaman, tetapi tidak menjelaskan cara menampilkannya. "Bagaimana" adalah tanggung jawab browser web.

Catatan

Anda mungkin mendengar templat Resource Manager yang disebut sebagai templat ARM. Kami lebih suka templat Azure Resource Manager nama lengkap atau templat Resource Manager.

Mengapa menggunakan templat Resource Manager?

Menggunakan templat Resource Manager membuat penyebaran Anda lebih cepat dan lebih dapat diulang. Misalnya, Anda tidak lagi harus membuat VM di portal, menunggunya selesai, lalu membuat VM berikutnya, dan sebagainya. Resource Manager mengurus seluruh penyebaran untuk Anda.

Berikut adalah beberapa manfaat lain untuk dipertimbangkan:

  • Templat meningkatkan konsistensi.

    Templat Resource Manager menyediakan bahasa umum bagi Anda dan orang lain untuk menjelaskan penyebaran Anda. Terlepas dari alat atau SDK yang digunakan untuk menyebarkan templat, struktur, format, dan ekspresi di dalam templat tetap sama.

  • Templat membantu mengekspresikan penyebaran yang kompleks.

    Templat memungkinkan Anda menggunakan beberapa sumber daya dalam urutan yang benar. Misalnya, Anda tidak ingin menggunakan mesin virtual sebelum membuat disk OS atau antarmuka jaringan. Resource Manager memetakan setiap sumber daya dan sumber daya dependennya, dan membuat sumber daya dependen terlebih dahulu. Pemetaan dependensi membantu memastikan bahwa penyebaran dilakukan dalam urutan yang benar.

  • Templat mengurangi tugas manual yang rawan akan kesalahan.

    Membuat dan menghubungkan sumber daya secara manual dapat memakan waktu, dan mudah untuk membuat kesalahan di sepanjang jalan. Resource Manager memastikan bahwa penyebaran terjadi dengan cara yang sama setiap saat.

  • Templat adalah kode.

    Templat mengekspresikan kebutuhan Anda melalui kode. Misalnya templat sebagai jenis infrastruktur sebagai kode yang dapat dibagikan, diuji, dan disesuaikan versinya seperti perangkat lunak lainnya. Selain itu, karena templat adalah kode, Anda dapat membuat "jejak kertas" yang dapat Anda ikuti. Kode templat mendokumentasikan penyebaran. Sebagian besar pengguna mempertahankan templat mereka di bawah semacam kontrol revisi, seperti Git. Saat Anda mengubah templat, riwayat revisinya juga mendokumentasikan bagaimana templat (dan penyebaran Anda) telah berkembang dari waktu ke waktu.

  • Templat mendukung penggunaan kembali.

    Templat Anda dapat berisi parameter yang diisi saat templat berjalan. Parameter dapat menentukan nama pengguna atau kata sandi, nama domain, dan sebagainya. Parameter templat memungkinkan Anda membuat beberapa versi infrastruktur Anda, seperti penahapan dan produksi, tetapi masih menggunakan templat yang sama.

  • Templat dapat ditautkan.

    Anda dapat menautkan templat Resource Manager bersama-sama untuk membuat templat tersebut menjadi modular. Anda dapat menulis templat kecil yang masing-masing mendefinisikan sepotong solusi, dan menggabungkannya untuk membuat sistem yang lengkap.

Model yang dijalankan analis keuangan Anda unik, tetapi Anda melihat pola dalam infrastruktur yang mendasarinya. Misalnya, sebagian besar model memerlukan database untuk menyimpan data. Banyak model menggunakan bahasa, kerangka kerja, dan sistem operasi pemrograman yang sama untuk melakukan detailnya. Anda dapat menentukan templat yang menjelaskan setiap komponen individual, seperti komputasi, penyimpanan, dan jaringan. Anda kemudian dapat menggabungkan komponen untuk memenuhi kebutuhan spesifik setiap analis.

Apa yang ada di templat Resource Manager?

Catatan

Di sini, Anda akan melihat beberapa contoh kode untuk memberi gambaran tentang struktur setiap bagian. Jangan khawatir jika apa yang Anda lihat tidak terbiasa dengan Anda. Anda dapat meninjau templat orang lain dan menulis sendiri saat Anda mendapatkan lebih banyak pengalaman langsung.

Anda mungkin pernah menggunakan JavaScript Object Notation (JSON) sebelumnya untuk mengirim data antara server dan aplikasi web. JSON juga merupakan cara populer untuk menggambarkan bagaimana aplikasi dan infrastruktur dikonfigurasi.

JSON memungkinkan kami mengekspresikan data yang disimpan sebagai objek, seperti komputer virtual, dalam teks. Dokumen JSON pada dasarnya adalah kumpulan pasangan kunci-nilai. Setiap kunci adalah string. Nilai kunci dapat berupa string, angka, ekspresi Boolean, daftar nilai, atau objek, yang merupakan kumpulan pasangan nilai kunci lainnya.

Templat Resource Manager dapat berisi bagian berikut ini:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

Meskipun bagian ini diekspresikan menggunakan JSON, bagian tersebut tidak terkait dengan bahasa JSON yang sebenarnya. Mari kita lihat setiap bagian secara lebih rinci.

Parameter

Bagian ini adalah tempat Anda menentukan nilai mana yang dapat dikonfigurasi saat templat dijalankan. Misalnya, Anda mungkin mengizinkan pengguna templat menentukan nama pengguna, kata sandi, atau nama domain.

Berikut adalah contoh yang menggambarkan dua parameter: satu untuk nama pengguna VM dan satu untuk kata sandinya.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

Variabel

Bagian ini adalah tempat Anda menentukan nilai yang digunakan di seluruh templat. Variabel dapat membantu membuat templat Anda lebih mudah dipertahankan. Misalnya, Anda dapat menentukan nama akun penyimpanan satu kali sebagai variabel, dan menggunakan variabel tersebut di seluruh templat. Jika nama akun penyimpanan berubah, Anda hanya perlu memperbarui variabel.

Berikut adalah contoh yang menggambarkan beberapa variabel yang menjelaskan fitur jaringan untuk VM.

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

Fungsi

Bagian ini adalah tempat Anda menentukan prosedur yang tidak ingin Anda ulangi di seluruh templat. Seperti variabel, fungsi dapat membantu membuat templat Anda lebih mudah dipertahankan. Berikut adalah contoh yang membuat fungsi untuk membuat nama unik yang dapat digunakan saat membuat sumber daya yang memiliki persyaratan penamaan yang unik secara global.

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Sumber daya

Bagian ini adalah tempat Anda menentukan sumber daya Azure yang membentuk penyebaran Anda.

Berikut adalah contoh yang membuat sumber alamat IP publik.

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

Di sini, jenis sumber daya adalah Microsoft.Network/publicIPAddresses. Namanya dibaca dari bagian variabel dan lokasinya (atau wilayah Azure) dibaca dari bagian parameter.

Karena jenis sumber daya dapat berubah dari waktu ke waktuapiVersion, sehingga merujuk ke versi jenis sumber daya yang ingin digunakan. Saat jenis sumber daya berkembang dan berubah, Anda dapat memodifikasi templat untuk berfungsi dengan fitur terbaru saat Anda siap.

Output

Bagian ini adalah tempat Anda menentukan informasi apa pun yang ingin Anda terima saat templat dijalankan. Misalnya, Anda mungkin ingin menerima alamat IP atau FQDN VM Anda, yang merupakan informasi yang tidak Anda ketahui hingga penerapan berjalan.

Contoh berikut menunjukkan output bernama hostname. Nilai FQDN dibaca dari pengaturan alamat IP publik VM.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}

Bagaimana cara menerapkan alur kerja Azure Logic Apps dalam templat?

Alur kerja Azure Logic Apps adalah sumber daya di Azure. Oleh karena itu, kita dapat menyebarkannya dalam templat dengan menambahkannya ke daftar sumber daya untuk disebarkan di bagian resources templat Resource Manager. Apa sebenarnya yang kita tambahkan ke bagian sumber daya sehingga alur kerja ditentukan? Kami menambahkan definisi alur kerja JSON dari alur kerja yang dimaksud ke bagian sumber daya. Bahkan, cuplikan JSON berikut ini memperlihatkan templat Resource Manager untuk menggunakan alur kerja dasar yang kami jelaskan di unit sebelumnya. Seperti yang Anda lihat dari sorotan, bagian sumber daya berisi definisi alur kerja lengkap.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Logic/workflows",
            "apiVersion": "2017-07-01",
            "name": "HelloLogicAppsTemplate",
            "location": "westus2",
            "properties": {
                "state": "Enabled",
                "definition": {
                    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "triggers": {
                        "manual": {
                            "type": "Request",
                            "kind": "Http",
                            "inputs": {
                                "method": "GET",
                                "schema": {}
                            }
                        }
                    },
                    "actions": {
                        "Response": {
                            "runAfter": {},
                            "type": "Response",
                            "kind": "Http",
                            "inputs": {
                                "body": "Hello Logic Apps Template!",
                                "statusCode": 200
                            }
                        }
                    },
                    "outputs": {}
                },
                "parameters": {}
            }
        }
    ],
    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
        }
     }
}

Kita dapat menyebarkan templat ini menggunakan salah satu metode berikut:

  • Menerapkan menggunakan portal Microsoft Azure
  • Menyebarkan menggunakan modul PowerShell Az
  • Terapkan dari Azure Command Line Interface (CLI).

Dalam modul ini, kami akan menyebarkan templat menggunakan Azure CLI dan perintah az deployment group.

Bagaimana cara menulis templat Resource Manager?

Ada banyak pendekatan untuk menulis templat Resource Manager. Meskipun Anda dapat menulis templat dari awal, umumnya Anda memulai dengan templat yang ada dan memodifikasinya sesuai dengan kebutuhan.

Berikut adalah beberapa cara mendapatkan templat pemula:

  • Gunakan portal Microsoft Azure untuk membuat templat berdasarkan sumber daya dalam grup sumber daya yang sudah ada.
  • Mulailah dengan templat yang Anda atau tim Anda bangun yang memiliki tujuan yang sama.
  • Mulai dengan Templat Azure Quickstart. Anda akan melihat bagaimana di bagian berikutnya.

Apa pun pendekatan Anda, menulis templat melibatkan penggunaan editor teks. Anda dapat membawa editor favorit Anda, tetapi ekstensi Alat Azure Resource Manager Visual Studio Code dirancang khusus untuk membuat templat. Ekstensi ini memudahkan Anda menavigasi kode templat, dan menyediakan pelengkapan otomatis untuk banyak tugas umum.

Saat Anda menjelajahi dan menulis templat, tinjau dokumentasi untuk memahami jenis sumber daya yang tersedia dan cara menggunakannya.

Di unit berikutnya, kami akan memeriksa dan menerapkan templat yang ada dari Azure CLI.