Topik ini menjelaskan cara menggunakan modul dan pertimbangan terkait penggunaannya.
Prasyarat
Jika Anda ingin menggunakan modul kustom, pastikan modul tersebut telah terdaftar di akun yang diinginkan. Untuk informasi lebih lanjut, lihat Buat modul kustom dan Lihat modul kustom.
Modul publik out-of-the-box yang disediakan oleh Resource Orchestration Service (ROS) dapat digunakan langsung. Untuk informasi lebih lanjut, lihat Lihat modul publik.
Tentukan konfigurasi untuk sebuah modul
Untuk menggunakan modul, perlakukan modul sebagai sumber daya dan lakukan langkah-langkah berikut:
Sertakan modul di bagian
Resourcesdari template atau modul Anda.Tentukan versi untuk modul.
Tentukan konfigurasi yang diperlukan untuk modul.
Tentukan versi untuk sebuah modul
Tentukan versi modul menggunakan Version. Nilai valid untuk Version adalah sebagai berikut:
Nilai kustom: Versi kustom modul dalam format
v+Angka, misalnyav1danv10.Kami merekomendasikan menentukan nilai kustom untuk Version saat menggunakan modul publik.
default: Versi default modul.Versi default tetap tersedia selama modul tidak dihapus.
Anda dapat menentukan versi default untuk modul kustom melalui API ROS atau konsol ROS. Untuk informasi lebih lanjut, lihat SetResourceType dan Ubah versi default dari sebuah modul.
Kami merekomendasikan menyetel Version ke default saat menggunakan modul kustom.
latest: Versi terbaru modul.Versi terbaru tetap tersedia selama modul tidak dihapus.
Versi terbaru berubah jika Anda membuat versi baru atau menghapus versi terbaru dari modul.
Kami merekomendasikan menyetel Version ke latest saat mengembangkan atau men-debug modul.
Tentukan properti untuk sebuah modul
Parameter modul memungkinkan Anda meneruskan nilai kustom ke modul dari template atau modul yang menyertainya. Modul kemudian dapat menggunakan nilai-nilai tersebut untuk mengonfigurasi properti sumber daya atau modul anaknya. Jika parameter modul tidak ditentukan dan memiliki nilai default yang ditetapkan oleh Default, nilai default akan digunakan.
Tentukan properti modul dengan menggunakan parameter template
Anda dapat menentukan nilai kustom untuk parameter template dan menggunakannya untuk mengonfigurasi properti modul. Dengan cara ini, nilai kustom diteruskan ke modul. Untuk informasi lebih lanjut tentang mendefinisikan parameter template, lihat Parameters.
Contoh ini menggunakan template yang berisi sumber daya MODULE::My::VPC::SampleVpc dan parameter template VpcName. Parameter template VpcName digunakan untuk menentukan properti VpcName di dalam modul.
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
VpcName:
Description: Nama untuk vpc sampel Anda
Type: String
Resources:
MyVpc:
Type: MODULE::My::VPC::SampleVpc
Version: default
Properties:
VpcName:
Ref: VpcNameTentukan properti modul anak dari modul induk
Jika modul induk dan modul anak memiliki parameter yang sama, Anda dapat menentukan nilai parameter untuk modul anak dari modul induk.
Contoh ini menggunakan MODULE::My::VPC::SampleVpcPrivate sebagai modul anak. Di dalam modul, parameter VpcName dan CidrBlock digunakan untuk mengonfigurasi properti VpcName dan CidrBlock dari sumber daya ALIYUN::ECS::VPC. Kode contoh berikut menunjukkan konfigurasi modul anak:
ROSTemplateFormatVersion: '2015-09-01'
Description: Sebuah vpc sampel.
Parameters:
VpcName:
Description: Nama untuk vpc
Type: String
CidrBlock:
Description: Blok CIDR untuk vpc
Type: String
Resources:
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
VpcName:
Ref: VpcName
CidrBlock:
Ref: CidrBlockModul MODULE::My::VPC::SampleVpcPrivate bersarang di dalam modul MODULE::My::VPC::SampleVpc. Di dalam modul induk MODULE::My::VPC::SampleVpc, konfigurasi berikut ditambahkan untuk menentukan parameter modul anak. Kode contoh di bawah ini menunjukkan konfigurasi modul induk.
Parameter
CidrBlockdari modul anakMODULE::My::VPC::SampleVpcPrivatedisetel ke192.168.0.0/16.Untuk parameter
VpcName, parameter modul didefinisikan. Dengan cara ini, Anda dapat menentukan nama VPC di dalam template atau modul yang berisi modulMODULE::My::VPC::SampleVpc.
ROSTemplateFormatVersion: '2015-09-01'
Description: Sebuah vpc sampel.
Parameters:
VpcName:
Description: Nama untuk vpc
Type: String
Resources:
MyVpc:
Type: MODULE::My::VPC::SampleVpcPrivate
Version: default
Properties:
VpcName:
Ref: VpcName
CidrBlock: 192.168.0.0/16Tentukan batasan untuk parameter modul
Parameter modul tidak mendukung penegakan batasan. Untuk memeriksa batasan parameter modul, buat parameter template dengan batasan yang dikonfigurasi dan rujuk parameter template di parameter modul Anda.
Tentukan kondisi untuk sebuah modul
Kondisi modul ditentukan seperti kondisi sumber daya. Kondisi modul diteruskan ke semua sumber daya dan modul anak di dalam modul. Untuk informasi lebih lanjut tentang mendefinisikan kondisi, lihat Conditions.
Tentukan dependensi untuk sebuah modul
Dependensi modul ditentukan seperti dependensi sumber daya. Dependensi modul diteruskan ke semua sumber daya dan modul anak di dalam modul. Untuk informasi lebih lanjut tentang mendefinisikan dependensi, lihat DependsOn.
Tentukan kebijakan penghapusan untuk sebuah modul
Kebijakan penghapusan modul ditentukan seperti kebijakan penghapusan sumber daya. Kebijakan penghapusan modul diteruskan ke semua sumber daya dan modul anak yang terkandung di dalam modul dan tidak dikonfigurasi dengan kebijakan penghapusan. Untuk informasi lebih lanjut tentang mendefinisikan kebijakan penghapusan, lihat DeletionPolicy.
Rujuk konfigurasi sebuah modul
Rujuk sumber daya dalam sebuah modul
Anda dapat menggunakan nama logis lengkap untuk merujuk sumber daya yang terkandung dalam modul. Nama logis lengkap sumber daya dalam modul dibentuk dengan menggabungkan elemen-elemen berikut:
Elemen 1: Nama logis yang ditentukan untuk modul di dalam template atau modul yang berisi modul.
Elemen 2: Nama logis yang ditentukan untuk sumber daya di dalam modul.
Elemen-elemen dalam nama logis lengkap dipisahkan dengan titik (.). Contoh: ModuleLogicalName.ResourceLogicalName dan ParentModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName.
Dengan cara ini, Anda dapat menggunakan fungsi bawaan Fn::GetAtt, Ref, dan Fn::Sub untuk mengakses sumber daya di bagian Resources modul atau nilai properti dari sumber daya modul. Untuk informasi lebih lanjut, lihat Resources.
// Contoh Fn::GetAtt
GetAtt Example1:
Fn::GetAtt:
- ModuleLogicalName.ResourceLogicalName
- AttributeName
GetAtt Example2:
Fn::GetAtt:
- ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName
- AttributeName
// Contoh Ref
Ref Example1:
Ref: ModuleLogicalName.ResourceLogicalName
Ref Example2:
Ref: ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName
// Contoh Fn::Sub
Sub Example1:
Fn::Sub: "${ModuleLogicalName.ResourceLogicalName}"
Sub Example2:
Fn::Sub: "${ModuleLogicalName.ResourceLogicalName.AttributeName}"
Sub Example3:
Fn::Sub: "${ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName}"
Sub Example4:
Fn::Sub: "${ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName.AttributeName}"Contoh ini menambahkan konfigurasi berikut:
Template merujuk properti sumber daya modul sebagai properti sumber daya di dalam template itu sendiri.
Template merujuk keluaran sumber daya modul sebagai keluaran di dalam template itu sendiri.
Sumber daya ALIYUN::ECS::VPC dengan nama logis Vpc terkandung di dalam modul MODULE::My::VPC::SampleVpc. Untuk menggunakan fungsi bawaan Ref untuk merujuk ID sumber daya dan fungsi bawaan Fn::GetAtt untuk merujuk keluaran sumber daya, gabungkan nama logis modul di dalam template dengan nama logis sumber daya di dalam modul untuk mendapatkan nama logis lengkap sumber daya. Dalam contoh ini, MyVpc digabungkan dengan Vpc untuk mendapatkan MyVpc.Vpc.
Untuk mendapatkan nama logis sumber daya di dalam modul, Anda dapat melihat modul di konsol ROS. Untuk informasi lebih lanjut, lihat Lihat modul kustom dan Lihat modul publik.
Parameters:
VpcName:
Description: Nama untuk vpc sampel Anda
Type: String
Resources:
MyVpc:
Type: MODULE::My::VPC::SampleVpc
Version: default
Properties:
VpcName:
Ref: VpcName
MyVsw:
Type: ALIYUN::ECS::VSwitch
Properties:
VpcId:
Ref: MyVpc.Vpc
CidrBlock: 192.168.1.0/24
ZoneId:
Fn::Select:
- '0'
- Fn::GetAZs:
Ref: ALIYUN::Region
VSwitchName: sample_vsw
Outputs:
VpcId:
Value:
Fn::GetAtt:
- MyVpc.Vpc
- VpcIdRujuk keluaran dalam sebuah modul
Anda dapat memperlakukan modul sebagai sumber daya dan keluaran modul sebagai properti sumber daya, serta menggunakan fungsi bawaan Fn::GetAtt dan Fn::Sub untuk mengakses keluaran yang terkandung di dalam modul. Untuk informasi lebih lanjut, lihat Outputs.
// Contoh Fn::GetAtt
GetAtt Example1:
Fn::GetAtt:
- ModuleLogicalName
- OutputName
GetAtt Example2:
Fn::GetAtt:
- ModuleLogicalName.ChildModuleLogicalName
- OutputName
// Contoh Fn::Sub
Sub Example1:
Fn::Sub: "${ModuleLogicalName.OutputName}"
Sub Example2:
Fn::Sub: "${ModuleLogicalName.ChildModuleLogicalName.OutputName}"Rujuk kondisi dalam sebuah modul
Anda dapat memperlakukan modul sebagai namespace untuk mendapatkan nama lengkap modul, serta menggunakan fungsi bawaan Fn::If, Fn::Or, Fn::And, dan Fn::Not untuk mengakses kondisi yang terkandung di dalam modul. Untuk informasi lebih lanjut, lihat Conditions.
// Contoh Fn::If
If Example1:
Fn::If:
- ModuleLogicalName.ConditionName
- Nilai untuk true
- Nilai untuk false
If Example2:
Fn::If:
- ModuleLogicalName.ChildModuleLogicalName.ConditionName
- Nilai untuk true
- Nilai untuk false
// Contoh Fn::Or
Or Example:
Fn::Or:
- ModuleLogicalName.ConditionName
- ModuleLogicalName.ChildModuleLogicalName.ConditionName
// Contoh Fn::And
And Example:
Fn::And:
- ModuleLogicalName.ConditionName
- ModuleLogicalName.ChildModuleLogicalName.ConditionName
// Contoh Fn::Not
Not Example1:
Fn::Not: ModuleLogicalName.ConditionName
Not Example2:
Fn::Not: ModuleLogicalName.ChildModuleLogicalName.ConditionNameRujuk pemetaan dalam sebuah modul
Anda dapat memperlakukan modul sebagai namespace untuk mendapatkan nama lengkap modul, serta menggunakan fungsi bawaan Fn::FindInMap untuk mengakses pemetaan yang terkandung di dalam modul. Untuk informasi lebih lanjut, lihat Mappings.
// Contoh Fn::FindInMap
FindInMap Example1:
Fn::FindInMap:
- ModuleLogicalName.MappingName
- Key
- SubKey
FindInMap Example2:
Fn::FindInMap:
- ModuleLogicalName.ChildModuleLogicalName.MappingName
- Key
- SubKeyBergantung pada sumber daya dalam sebuah modul
Untuk bergantung pada sumber daya yang terkandung dalam modul, gunakan nama logis lengkap sumber daya tersebut.
Resource1:
DependsOn: ModuleLogicalName.ResourceLogicalName
Resource2:
DependsOn: ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalNameBergantung pada sebuah modul
Jika sumber daya bergantung pada modul atau modul bergantung pada modul lain, semua sumber daya di dalam modul yang bergantung dan modul anak dari modul yang bergantung bekerja sebagai dependensi dari sumber daya atau modul. Untuk bergantung pada modul, gunakan nama logis lengkap modul.
Resource1:
DependsOn: ModuleLogicalName
Resource2:
DependsOn: ModuleLogicalName.ChildModuleLogicalNamePertimbangan
Berikut adalah pertimbangan untuk menggunakan modul:
Modul gratis. Anda hanya dikenakan biaya untuk sumber daya yang diselesaikan dari modul ke tumpukan.
Jika template berisi modul, batasan berikut diberlakukan pada template:
Nama parameter tidak boleh berisi kombinasi titik dan titik dua (
.:).Nama logis sumber daya tidak boleh berisi titik (
.).Nama keluaran tidak boleh berisi titik (
.).Nama kondisi tidak boleh berisi ampersand (
&).Bagian
TransformdanWorkspacetidak dapat ditambahkan ke template.Bagian
MetadatadanCounttidak dapat ditambahkan ke modul.Nama logis lengkap sumber daya dan modul, serta nama lengkap kondisi dan pemetaan harus unik.
Kuota ROS, seperti jumlah maksimum sumber daya yang diizinkan dalam tumpukan dan ukuran maksimum file template, berlaku untuk template yang diproses tanpa memperhatikan apakah sumber daya dalam template dibuat dari modul. Untuk informasi lebih lanjut, lihat Limits.
Tag dan grup sumber daya yang dikonfigurasikan untuk tumpukan akan disebarkan ke setiap sumber daya tumpukan yang dibuat dari modul.
Data di bagian
MetadatadanRulesdari modul diabaikan saat template diproses.Referensi dinamis tidak diselesaikan saat modul diproses. Referensi dinamis diselesaikan ketika sumber daya tunggal dibuat atau diperbarui selama operasi tumpukan. Untuk informasi lebih lanjut tentang referensi dinamis, lihat Langkah 2: Buat template ROS.
Keluaran di dalam modul tidak disebarkan ke keluaran di dalam template. Anda dapat membuat keluaran template dan merujuknya di keluaran modul. Untuk informasi lebih lanjut, lihat Rujuk keluaran sebuah modul.
Parameter di dalam modul tidak disebarkan ke parameter di dalam template. Anda dapat membuat parameter template dan merujuknya di parameter modul. Untuk informasi lebih lanjut, lihat Tentukan properti modul dengan menggunakan parameter template.
Jika Anda mengubah versi default dari modul untuk mana Version disetel ke
default, tidak ada operasi pembaruan tumpukan yang dimulai.Namun, waktu berikutnya Anda menggunakan template yang berisi modul untuk melakukan operasi tumpukan, seperti pembaruan tumpukan, ROS menggunakan versi default baru selama operasi.
Jika Anda membuat versi baru untuk modul atau menghapus versi terbaru dari modul untuk mana Version disetel ke
latest, tidak ada operasi pembaruan tumpukan yang dimulai.Namun, waktu berikutnya Anda menggunakan template yang berisi modul untuk melakukan operasi tumpukan, ROS menggunakan versi terbaru baru selama operasi.
Selama operasi tumpukan, ROS menggunakan modul yang terdaftar di akun saat ini, termasuk modul yang bersarang di modul lain.
Jika Anda menggunakan modul yang memiliki beberapa versi yang diterapkan di beberapa akun, hasil yang berbeda dikembalikan ke akun meskipun Anda menggunakan template yang sama.
Untuk memastikan konsistensi, jika Anda ingin menyertakan modul dalam template tumpukan untuk menggunakan modul untuk grup tumpukan, Anda harus menggunakan modul yang sama di semua akun tempat Anda ingin menerapkan instans tumpukan. Ini mencakup modul yang bersarang di modul lain. Untuk informasi lebih lanjut, lihat Grup tumpukan.
CatatanJika Anda ingin memperluas modul di akun tempat grup tumpukan milik, pilih Whether to Expand Modules in Current Account di konsol ROS saat membuat atau memperbarui grup tumpukan.