Saat membuat layanan di Compute Nest, penyedia layanan harus menyediakan sebuah templat. Anda perlu menulis templat tersebut terlebih dahulu, lalu menempelkan isinya ke editor templat di konsol Compute Nest atau mengunggah file templatnya. Topik ini menggunakan pembuatan Virtual Private Cloud (VPC) sebagai contoh untuk menjelaskan cara menulis templat dalam format JSON atau YAML serta memvalidasinya di konsol Resource Orchestration Service (ROS).
Informasi latar belakang
Templat di Compute Nest pada dasarnya adalah templat Resource Orchestration Service (ROS). Anda dapat menulis templat stack yang mengikuti spesifikasi ROS. Di dalam templat tersebut, Anda dapat mendefinisikan sumber daya cloud yang diperlukan—seperti instance ECS dan instance ApsaraDB RDS—serta ketergantungan antar sumber daya tersebut. Mesin orkestrasi ROS secara otomatis membuat dan mengonfigurasi semua sumber daya berdasarkan templat Anda, sehingga memungkinkan penerapan dan operasi yang terotomatisasi. Resource Orchestration Service adalah layanan Alibaba Cloud yang menyederhanakan manajemen sumber daya cloud. Untuk informasi lebih lanjut, lihat Apa itu Resource Orchestration Service?.
Menulis templat
ROS mendukung templat yang ditulis dalam sintaksis JSON/YAML dan Terraform. Anda dapat menulis templat dengan memodifikasi contoh templat atau membuatnya dari awal.
-
Untuk skenario umum, ROS menyediakan contoh templat. Anda dapat memilih dan memodifikasi templat referensi yang sesuai dari halaman Template Samples di konsol ROS. Templat dalam kategori ISV Software Deployment di bawah Scenarios umumnya digunakan untuk skenario Compute Nest. Langkah-langkah modifikasi untuk contoh templat ini tersedia dalam deskripsi templat.
Jika Anda menggunakan contoh templat dan hanya perlu melakukan perubahan sederhana, kami sarankan langsung menuju bagian Memvalidasi templat di konsol ROS. Anda dapat memilih dan memodifikasi contoh templat tersebut saat membuat stack.
-
Untuk skenario kompleks, Anda dapat menggunakan editor teks apa pun untuk menulis templat dari awal.
-
Jika Anda memiliki proyek Terraform kompleks dengan beberapa file, kami sarankan mengonversi templat Terraform Anda ke format templat ROS. Hal ini memungkinkan Anda mengemas seluruh konfigurasi Terraform ke dalam satu file tunggal. Saat Anda menempelkan templat berformat ROS ini ke konsol Compute Nest, sistem akan secara otomatis mengenali kontennya sebagai penerapan Terraform. Ini menyederhanakan proses karena Anda tidak perlu mengunggah beberapa file Terraform. Untuk mengonversi templat Terraform ke format ROS, ikuti langkah-langkah berikut:
-
Instal ROS Template Transformer. Kami sarankan menggunakan pip. Untuk informasi lebih lanjut tentang metode instalasi lainnya, lihat Instal alat konversi templat.
pip install alibabacloud-ros-tran -
Tempatkan semua file Terraform Anda dalam satu direktori. Jalankan perintah berikut untuk mengonversi templat Terraform menjadi templat ROS. Ganti {terraform_path} dengan path ke direktori induk file-file Terraform Anda.
rostran transform {terraform_path} -S terraform --force --compatible --target-format yaml -
Tempelkan templat ROS yang dihasilkan dari langkah sebelumnya ke konsol Compute Nest. Pilih ROS sebagai metode penerapan. Sistem kemudian akan secara otomatis mengenalinya sebagai templat Terraform dan mengatur metode penerapannya menjadi Terraform.
-
Templat YAML berikut menunjukkan cara membuat instance ECS:
ROSTemplateFormatVersion: '2015-09-01'
# Parameter
Parameters:
PayType:
Type: String
Label:
en: Jenis tagihan instance ECS
Default: PostPaid
AllowedValues:
- PostPaid
- PrePaid
AssociationProperty: ChargeType
AssociationPropertyMetadata:
LocaleKey: InstanceChargeType
PayPeriodUnit:
Type: String
Label:
en: Unit periode pembayaran
Default: Month
AllowedValues:
- Month
- Year
AssociationProperty: PayPeriodUnit
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
PayPeriod:
Type: Number
Description:
en: Saat durasi langganan adalah Bulan, nilai Periode berkisar dari 1 hingga 9, 12, 24, 36, 48, atau 60.
<b><font color='red'> Parameter ini hanya valid saat metode penagihan untuk instance ECS adalah PrePaid. </font>
Label:
en: Periode
Default: 1
AllowedValues:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
AssociationProperty: PayPeriod
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
EcsInstanceType:
Type: String
Label:
en: Jenis instance
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
InstanceChargeType: ${InstanceChargeType}
InstancePassword:
NoEcho: true
Type: String
Description:
en: Kata sandi untuk masuk ke server. Kata sandi harus memiliki panjang 8 hingga 30 karakter dan berisi setidaknya tiga dari jenis karakter berikut: huruf besar, huruf kecil, angka, dan karakter khusus, seperti ()`~!@#$%^&*_-+=|{}[]:;<>,.?/.
Label:
en: Kata sandi instance
ConstraintDescription:
en: Kata sandi harus memiliki panjang 8 hingga 30 karakter dan berisi setidaknya tiga dari jenis karakter berikut: huruf besar, huruf kecil, angka, dan karakter khusus, seperti ()`~!@#$%^&*_-+=|{}[]:;<>,.?/.
AssociationProperty: ALIYUN::ECS::Instance::Password
AllowedPattern: '^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$'
MinLength: 8
MaxLength: 30
ZoneId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Label:
en: Zona ketersediaan vSwitch
VpcId:
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
Description:
en: ID VPC tempat Anda ingin men-deploy sumber daya. ID biasanya diawali dengan `vpc-`.
Label:
en: ID VPC
VSwitchId:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Type: String
Description:
en: ID vSwitch di VPC dan zona ketersediaan yang ditentukan.
Label:
en: ID vSwitch
# Sumber Daya
Resources:
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: VpcId
# Aturan Ingress untuk grup keamanan
SecurityGroupIngress:
- PortRange: 80/80
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
NicType: internet
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
# Nama instance
InstanceName:
Fn::Join:
- '-'
- - Ref: ALIYUN::StackName
- '[1,4]'
IoOptimized: optimized
# Metode penagihan
InstanceChargeType:
Ref: PayType
PeriodUnit:
Ref: PayPeriodUnit
Period:
Ref: PayPeriod
# Konfigurasi jaringan
VpcId:
Ref: VpcId
ZoneId:
Ref: ZoneId
VSwitchId:
Ref: VSwitchId
SecurityGroupId:
Ref: EcsSecurityGroup
# Jenis dan ukuran disk
SystemDiskCategory: cloud_essd
SystemDiskSize: 200
MaxAmount: 1
# Image
ImageId: centos_7
# Jenis instance
InstanceType:
Ref: EcsInstanceType
Password:
Ref: InstancePassword
# Aktifkan IP publik
AllocatePublicIP: true
# Bandwidth publik
InternetMaxBandwidthOut: 1
ECSRunCommand:
Type: ALIYUN::ECS::RunCommand
Properties:
InstanceIds:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
Type: RunShellScript
Sync: true
Timeout: 3600
CommandContent: |-
#!/bin/bash
# Output
Outputs:
# Menampilkan alamat IP publik sebagai titik akhir HTTP di konsol
Endpoint:
Description:
en: Alamat IP publik
Value:
Fn::Sub:
- http://${ServerAddress}
- ServerAddress:
Fn::Select:
- 0
- Fn::GetAtt:
- EcsInstanceGroup
- PublicIps
# Metadata
Metadata:
ALIYUN::ROS::Interface:
# Informasi grup
ParameterGroups:
- Parameters:
- PayType
- PayPeriodUnit
- PayPeriod
Label:
default:
en: Konfigurasi jenis pembayaran
- Parameters:
- EcsInstanceType
- InstancePassword
Label:
default:
en: Konfigurasi instance ECS
- Parameters:
- ZoneId
- VpcId
- VSwitchId
Label:
default:
en: Pilih infrastruktur yang ada
Sebuah templat memiliki empat bagian utama: Parameters, Resources, Outputs, dan Metadata.
Parameters
Bagian Parameters mendefinisikan parameter yang dikonfigurasi pengguna saat membuat instance layanan. Tabel berikut menjelaskan parameter dalam contoh ini.
|
Parameter |
Deskripsi |
|
PayType |
Metode penagihan untuk instans. |
|
PayPeriodUnit |
Unit durasi langganan. |
|
PayPeriod |
Durasi langganan. |
|
EcsInstanceType |
Tipe instans dari instance ECS. |
|
InstancePassword |
Kata sandi instance ECS. |
|
ZoneId |
Zona ketersediaan untuk vSwitch. |
|
VpcId |
ID VPC. |
|
VSwitchId |
ID vSwitch. |
Resources
Bagian Resources mendefinisikan sumber daya yang akan dibuat, termasuk Type dan Properties setiap sumber daya. Tabel berikut menjelaskan sumber daya yang didefinisikan dalam contoh ini.
|
Tipe sumber daya |
Deskripsi |
|
ALIYUN::ECS::SecurityGroup |
Membuat grup keamanan ECS. |
|
ALIYUN::ECS::InstanceGroup |
Membuat instance ECS. |
|
ALIYUN::ECS::RunCommand |
Menjalankan skrip shell pada instance ECS. |
Lihat Indeks tipe sumber daya untuk sintaksis, properti, dan nilai kembali (output) setiap tipe sumber daya Alibaba Cloud. Informasi ini membantu Anda mendeklarasikan kebutuhan sumber daya spesifik dalam templat Anda.
Outputs
Bagian Outputs mendefinisikan informasi yang dikembalikan setelah pembuatan layanan. Dalam contoh ini, output-nya adalah Endpoint (http://PublicIp). Setelah sumber daya dibuat, pengguna dapat menggunakan alamat ini untuk mengakses layanan.
Metadata
Bagian Metadata memungkinkan Anda mengelompokkan parameter yang didefinisikan di bagian Parameters dan menyembunyikan parameter kustom. Hasilnya dapat dilihat di halaman Configure Parameters di konsol ROS. Tabel berikut menjelaskan kelompok parameter dalam contoh ini.
|
Nama kelompok |
Parameter |
|
Konfigurasi metode pembayaran |
PayType |
|
PayPeriodUnit |
|
|
PayPeriod |
|
|
Konfigurasi instance ECS |
EcsInstanceType |
|
InstancePassword |
|
|
Pilih infrastruktur yang sudah ada |
ZoneId |
|
VpcId |
|
|
VSwitchId |
Anda juga dapat menggunakan fitur lanjutan seperti Mappings dan Conditions. Untuk informasi lebih lanjut, lihat Struktur templat.
Anda juga dapat menggunakan Terraform untuk membuat templat. Untuk informasi lebih lanjut, lihat Membuat templat Terraform.
Memvalidasi templat di konsol ROS
Setelah menulis templat, Anda dapat memvalidasinya dengan membuat stack di konsol ROS.
-
Masuk ke ROS console.
-
Di panel navigasi sebelah kiri, klik Stacks.
-
Di pojok kiri atas halaman, klik Create Stack.
-
Pada halaman Create Stack, konfigurasikan parameter yang diperlukan.
-
Di bagian Specify Template, pilih Select an Existing Template dan tempelkan templat Anda ke editor konten. Atau, pilih Use a Sample Template dan modifikasi templat tersebut.
-
Klik Next. Pada halaman Configure Parameters, verifikasi parameter. Secara opsional, klik Preview Template Resources untuk memeriksa pengaturan sumber daya.
-
Opsi: Klik Next. Pada halaman Compliance Precheck (Optional), konfigurasikan parameter.
-
Opsi: Klik Next. Pada halaman Check and Confirm (Optional), konfirmasi konfigurasi Anda.
-
Klik Create.
CatatanLangkah Configure Stack (Optional) dan Check and Confirm (Optional) bersifat opsional dan dapat dilewati.
-
Jika stack berhasil dibuat, templat Anda dianggap valid. Jika pembuatan stack gagal, periksa pesan error dan modifikasi templat Anda sesuai kebutuhan.