Templat adalah cetak biru yang menggambarkan infrastruktur dan arsitektur Anda. Anda dapat mendefinisikan cloud resource dan dependensinya dalam sebuah templat, lalu menggunakan Resource Orchestration Service (ROS) untuk menyelesaikan deployment. Topik ini menjelaskan cara menulis dan menguji templat serta mendefinisikan resource dan dependensinya agar Anda dapat segera memulai.
Informasi latar belakang
Setelah memahami struktur templat ROS, Anda dapat mulai menulis templat pertama Anda. Untuk informasi selengkapnya, lihat Panduan cepat menulis templat.
Topik ini memandu Anda menulis dan menguji templat sederhana yang membuat VPC. Selanjutnya, topik ini membahas konsep yang lebih lanjut, seperti mendefinisikan beberapa resource, dependensinya, dan parameter. Topik ini mencakup bagian-bagian berikut:
Menulis templat
Bagian terpenting dalam menulis templat adalah mendeklarasikan resource yang akan dibuat di bagian Resources. Anda dapat menemukan semua tipe resource yang didukung oleh ROS di Resource type index. Klik tipe resource tertentu untuk melihat properti dan return value yang didukungnya. Untuk informasi selengkapnya tentang cara menulis templat, lihat Panduan cepat menulis templat. Contoh templat berikut membuat VPC:
ROSTemplateFormatVersion: '2015-09-01'
Resources:
VPC:
Type: ALIYUN::ECS::VPC
Properties:
VpcName: myvpc
CidrBlock: 192.168.0.0/16
Outputs:
VpcId:
Value:
Ref: VPC
VRouterId:
Value:
Fn::GetAtt:
- VPC
- VRouterIdMenguji templat
Setelah menulis templat, Anda dapat membuat stack darinya untuk menguji apakah templat tersebut membuat resource yang diharapkan.
-
Masuk ke Resource Orchestration Service console.
Buat stack.
-
Di panel navigasi sebelah kiri, klik Stacks.
-
Di bilah menu atas, pilih wilayah tempat Anda ingin membuat stack, misalnya China (Hangzhou).
-
Di halaman Stacks, klik Create Stack. Di bagian Specify Template, klik Select an Existing Template.
Catatan-
Memilih Create Template atau ROS Infrastructure Composer akan mengarahkan Anda ke halaman yang sesuai.
-
Di halaman Select Template, klik Select an Existing Template di area Specify Template. Atur Template Import Method menjadi Enter Template Content. Di bagian Template Content, pilih tab ROS, tempel templat YAML dari bagian Menulis templat, lalu klik Next.
Di halaman Configure Parameters, masukkan Stack Name.
Di bagian Configure Stack Settings, konfigurasikan pengaturan seperti Rollback on Failure, Timeout Period, Tags, Resource Group, Stack Policy, Maximum Concurrent Resources, Deletion Protection, RAM Role, Stack Event Callback URLs, dan Manual Payment, lalu klik Next.
Di halaman Check and Confirm, klik Preview Template Resources. Di kotak dialog Preview, tinjau nama, tipe, dan properti resource yang telah divalidasi oleh ROS, lalu klik OK.
Di halaman Check and Confirm, klik Create.
-
Lihat stack.
Di halaman manajemen stack, klik tab Event untuk melihat daftar event untuk resource dalam templat.
Klik tab Resources untuk melihat detail resource yang telah dibuat.
CatatanAnda juga dapat mengklik ID resource untuk membuka konsolnya, melihat detail lebih lanjut, dan memverifikasi bahwa resource tersebut sesuai dengan harapan Anda.
Klik tab Output untuk melihat output yang didefinisikan di bagian
Outputstemplat.
Mendefinisikan beberapa resource dan dependensinya
Setelah mempelajari cara menulis templat dasar untuk VPC, Anda dapat mendefinisikan beberapa resource dan dependensinya. Misalnya, vSwitch bergantung pada VPC, artinya Anda harus membuat vSwitch di VPC tertentu. Dengan mendefinisikan VPC, vSwitch, dan dependensinya dalam templat, Anda dapat membuat stack untuk skenario yang lebih kompleks.
Gunakan fungsi untuk mendapatkan nilai properti output suatu resource.
Misalnya, jika resource VPC didefinisikan di bagian
Resources, Anda dapat menggunakan{"Fn::GetAtt": ["VPC", "VpcId"]}untuk mendapatkan properti outputVpcId-nya.Gunakan fungsi untuk mendapatkan ID resource atau nilai parameter.
Misalnya, jika resource VPC didefinisikan di bagian
Resources, Anda dapat menggunakan{"Ref": "VPC"}untuk mereferensikan ID resourcenya.CatatanFungsi
{"Ref": "VPC"}mengembalikan nilai yang sama dengan{"Fn::GetAtt": ["VPC", "VpcId"]}, tetapiReflebih ringkas.Fungsi
RefdanFn::GetAttsecara implisit mendeklarasikan dependensi resource. Anda juga dapat mendeklarasikan dependensi secara eksplisit dengan menggunakan atribut DependsOn.
Optimalkan templat.
Contoh templat berikut menambahkan vSwitch bernama
myvsw. vSwitch tersebut dibuat di zona ketersediaancn-beijing-f, menggunakan blok CIDR192.168.0.0/24, dan mereferensikan VPC. BagianOutputsdiperbarui untuk menyertakan ID vSwitch.ROSTemplateFormatVersion: '2015-09-01' Resources: VPC: Type: ALIYUN::ECS::VPC Properties: VpcName: myvpc CidrBlock: 192.168.0.0/16 VSwitch: Type: ALIYUN::ECS::VSwitch Properties: VpcId: Ref: VPC ZoneId: cn-beijing-f VSwitchName: myvsw CidrBlock: 192.168.0.0/24 Outputs: VpcId: Value: Fn::GetAtt: - VPC - VpcId VRouterId: Value: Fn::GetAtt: - VPC - VRouterId VSwitchId: Value: Ref: VSwitch
Mendefinisikan nilai parameter dan properti
Bagian Parameters membuat templat lebih fleksibel dan dapat digunakan kembali. Di bagian ini, Anda dapat mendefinisikan parameter untuk menampilkan daftar nilai yang diizinkan secara dinamis, mengelompokkan parameter serupa, dan lainnya.
Mendefinisikan parameter
Menentukan nilai tetap untuk properti resource dalam templat memang mudah, tetapi tidak fleksibel. Misalnya, jika Anda mengatur
ZoneIdkecn-beijing-f, Anda hanya dapat membuat stack di zona ketersediaan tersebut. Untuk mengubah zona ketersediaan, Anda harus mengedit templat secara manual. Untuk menghindarinya, Anda dapat mengekstraksi properti yang sering digunakan atau umum dan mendefinisikannya sebagai parameter. Hal ini memungkinkan Anda memberikan nilai properti yang berbeda setiap kali membuat stack tanpa mengubah templat. Tabel berikut menjelaskan parameter yang didefinisikan dalam contoh kode templat berikut.Parameter dalam templat
Parameter
Deskripsi
ZoneIdMenentukan properti
ZoneIduntuk vSwitch.VpcCidrBlockMenentukan properti
CidrBlockuntuk VPC. Nilai default-nya adalah192.168.0.0/16.VSwitchCidrBlockMenentukan properti
CidrBlockuntuk vSwitch. Nilai default-nya adalah192.168.0.0/24.Contoh kode templat
ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String VpcCidrBlock: Type: String Default: 192.168.0.0/16 VSwitchCidrBlock: Type: String Default: 192.168.0.0/24 Resources: VPC: Type: ALIYUN::ECS::VPC Properties: VpcName: myvpc CidrBlock: Ref: VpcCidrBlock VSwitch: Type: ALIYUN::ECS::VSwitch Properties: VpcId: Ref: VPC ZoneId: Ref: ZoneId VSwitchName: myvsw CidrBlock: Ref: VSwitchCidrBlock Outputs: VpcId: Value: Ref: VPC VRouterId: Value: Fn::GetAtt: - VPC - VRouterId VSwitchId: Value: Ref: VSwitchSaat menggunakan templat ini untuk membuat stack, Anda dapat mengatur nilai parameternya di Resource Orchestration Service console.
ROS menganalisis asosiasi antara parameter dan properti resource dalam templat untuk menentukan nilai yang valid bagi setiap parameter. Misalnya, parameter
ZoneIddalam templat dikaitkan dengan propertiZoneIdresource vSwitch. ROS mengambil daftar zona ketersediaan yang mendukung vSwitch dan menampilkannya di konsol.
Menetapkan nilai yang diizinkan secara dinamis
Bagian Parameters mendukung beberapa properti yang memungkinkan Anda menyesuaikan cara opsi parameter ditampilkan di konsol. Tabel berikut menjelaskan properti yang didefinisikan dalam contoh kode templat berikut.
Properti parameter
Properti
Deskripsi
AllowedValues
Menentukan daftar nilai yang diizinkan untuk parameter, yang ditampilkan oleh Resource Orchestration Service console sebagai daftar drop-down. Misalnya, nilai yang diizinkan untuk
VpcCidrBlockadalah10.0.0.0/8,172.16.0.0/12, dan192.168.0.0/16.Label
Menentukan alias untuk parameter, yang ditampilkan di Resource Orchestration Service console. Misalnya,
ZoneIdditampilkan sebagaiAvailability Zone ID.Contoh kode templat
ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String Label: Availability Zone ID VpcCidrBlock: Type: String Label: VPC CIDR Block Default: 192.168.0.0/16 AllowedValues: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 VSwitchCidrBlock: Type: String Label: vSwitch CIDR Block Default: 192.168.0.0/24Saat menggunakan templat ini untuk membuat stack, Anda dapat langsung memilih nilai parameternya dari daftar di Resource Orchestration Service console.
Menampilkan parameter secara dinamis berdasarkan asosiasi
Saat Anda mendefinisikan properti AssociationProperty dan AssociationPropertyMetadata untuk suatu parameter, Resource Orchestration Service console secara dinamis mengambil dan menampilkan nilai yang diizinkan untuknya. Untuk informasi selengkapnya, lihat AssociationProperty dan AssociationPropertyMetadata.
Misalnya, asumsikan templat digunakan untuk membuat instance ECS, dan
VpcIdsertavSwitchIddidefinisikan sebagai parameter. Resource Orchestration Service console secara otomatis menampilkan daftar drop-down untukVpcIddanvSwitchId. Berikut adalah contoh kode templat:ROSTemplateFormatVersion: '2015-09-01' Parameters: VpcId: Type: String AssociationProperty: ALIYUN::ECS::VPC::VPCId ZoneId: Type: String AssociationProperty: ALIYUN::ECS::ZoneId VSwitchId: Type: String AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId AssociationPropertyMetadata: ZoneId: ${ZoneId} VpcId: ${VpcId}Saat menggunakan templat ini untuk membuat stack, parameter-parameter tersebut ditampilkan secara dinamis di Resource Orchestration Service console.
Mengelompokkan parameter serupa
Anda dapat menggunakan bagian Metadata untuk mengelompokkan parameter terkait. Saat templat memiliki banyak parameter, pengelompokan ini mempermudah konfigurasi di konsol.
Misalnya, Anda dapat mengelompokkan parameter ZoneId, VpcCidrBlock, dan
VSwitchCidrBlockdalam templat ke dalam kelompok Basic Settings dan Resource Settings. Kelompok Basic Settings berisi parameter ZoneId, sedangkan kelompok Resource Settings berisi parameter VpcCidrBlock danVSwitchCidrBlock. Anda dapat mendefinisikan kedua kelompok ini di bagian ParameterGroups dalam Metadata. Contoh kode templatnya adalah sebagai berikut:ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String VpcCidrBlock: Type: String Default: 192.168.0.0/16 VSwitchCidrBlock: Type: String Default: 192.168.0.0/24 Metadata: ALIYUN::ROS::Interface: ParameterGroups: - Parameters: - ZoneId Label: default: Basic Settings - Parameters: - VpcCidrBlock - VSwitchCidrBlock Label: default: Resource SettingsSaat menggunakan templat ini untuk membuat stack, parameter-parameter tersebut muncul di bawah kelompok
Basic SettingsdanResource Settingsdi Resource Orchestration Service console.
Topik terkait
Untuk mempelajari cara menulis templat dengan cepat, lihat Write a template step by step.
Untuk menyimpan templat sebagai templat pribadi, lihat Create a template.
Untuk berbagi templat, lihat Share a template with an Alibaba Cloud account dan Share a template with members in a Resource Directory.
Untuk memperkirakan harga resource dalam templat, lihat Estimate resource prices.
Untuk informasi selengkapnya mengenai sintaksis templat, lihat Template syntax.
Untuk menggunakan templat guna membuat custom resource, lihat Custom resources.
Untuk menyematkan modul dalam templat, lihat Use modules.