Apa itu resource
Resource adalah elemen infrastruktur yang Anda konfigurasikan menggunakan kode Terraform—seperti instans Elastic Compute Service (ECS), bucket Object Storage Service (OSS), jaringan Virtual Private Cloud (VPC), atau objek cloud lainnya. Terraform memanggil API setiap layanan Alibaba Cloud untuk membuat dan mengelola resource tersebut, termasuk instans ECS, template penyebaran instans ECS, grup keamanan, jaringan VPC, aturan firewall, VPN, tabel rute, database, dan Server Load Balancer (SLB).
Sintaksis deklarasi resource
Definisikan resource dalam file .tf. Tempatkan resource dengan tipe serupa dalam folder yang sama dan deklarasikan di file main.tf.
Pada contoh ini, main.tf adalah file konfigurasi root:
-
resource
Kata kunci
resourcemendeklarasikan satu objek infrastruktur. -
resource_type
resource_typemengidentifikasi jenis resource yang akan dibuat. Jenis yang tersedia berasal dari provider yang dideklarasikan dalam blok provider Terraform. Provider adalah plugin yang menyediakan sekumpulan jenis resource. -
resource_name
resource_nameadalah identifikasi logis untuk resource dalam folder konfigurasi saat ini—bukan nama objek infrastruktur sebenarnya yang dibuat di cloud.resource_nameharus unik di antara semua resource dengan tipe yang sama dalam folder tersebut. -
Parameter resource
Parameter resource menggunakan ekspresi untuk mendeklarasikan properti suatu resource. Beberapa parameter wajib diisi saat pembuatan; yang lain bersifat opsional dan memungkinkan Anda mengonfigurasi fitur lanjutan.
Satu file konfigurasi Terraform dapat berisi beberapa resource dengan tipe yang sama maupun berbeda, serta mencakup beberapa provider sekaligus.
Pada contoh ini, blok resource pertama mendeklarasikan jaringan VPC dan yang kedua mendeklarasikan vSwitch, keduanya dalam file main.tf yang sama. Resource VPC bertipe alicloud_vpc dan diberi nama main-vpc; resource vSwitch bertipe alicloud_vswitch dan diberi nama main-vswitch.
Semua parameter dalam blok alicloud_vpc bersifat opsional. Misalnya, cidr_block bersifat opsional karena memiliki nilai default—jika Anda menghilangkannya, provider atau backend layanan VPC akan menghasilkan nilai tersebut secara otomatis.
Untuk alicloud_vswitch, parameter vpc_id, cidr_block, dan zone_id wajib diisi; semua parameter lainnya bersifat opsional.
Parameter resource bersifat spesifik untuk masing-masing tipe dan sangat bervariasi antar tipe. Sebagai contoh, alicloud_vpc menerima vpc_name dan cidr_block, sedangkan alicloud_vswitch menerima vswitch_name, cidr_block, zone_id, dan vpc_id.
Referensi parameter atribut
Untuk mereferensikan properti resource dari blok resource lain, gunakan format: <resource_type>.<resource_name>.<attribute>.
Pada contoh di atas, alicloud_vswitch memerlukan ID VPC saat pembuatan. Karena ID VPC dihasilkan oleh server ketika VPC dibuat, alicloud_vswitch mereferensikannya dari blok alicloud_vpc menggunakan alicloud_vpc.main_vpc.id.
Referensi lintas-resource hanya berfungsi jika resource terkait didefinisikan dalam file yang berada dalam folder konfigurasi root yang sama.
Pertimbangan dalam definisi resource
Perhatikan aturan berikut saat mendefinisikan blok resource:
-
Nama resource harus unik
Setiap resource diidentifikasi berdasarkan tipe dan namanya dalam folder konfigurasi saat ini. Nama resource harus unik di antara semua resource dengan tipe yang sama dalam folder tersebut.
-
Tipe resource tidak dapat dikustomisasi
Tipe resource adalah kata kunci tetap yang terikat pada provider. Sebagai contoh, bucket OSS harus menggunakan kata kunci
alicloud_oss_bucket. Penggunaan identifikasi lain menyebabkan perintahterraform plandanterraform applygagal. -
Semua parameter konfigurasi harus dideklarasikan di dalam badan blok resource
Semua properti infrastruktur untuk suatu resource harus dideklarasikan di dalam blok resource, di antara tanda kurung kurawal
{}.Ketika Anda menjalankan perintah Terraform, muncul error seperti berikut:
Error: Argument or block definition required on main.tf line 4: 4: storage_class An argument or block definition is required here. -
Semua parameter yang diperlukan harus diisi
Menghilangkan parameter yang diperlukan menyebabkan perintah
terraform plandanterraform applygagal.Ketika Anda menjalankan perintah Terraform, muncul error seperti berikut:
Error: Missing required argument on main.tf line 1, in resource "alicloud_vswitch" "main_vswitch": 1: resource "alicloud_vswitch" "main_vswitch" { The argument "vpc_id" is required, but no definition was found.