Terraform adalah alat open source dari HashiCorp untuk orkestrasi sumber daya cloud. Dengan Terraform, Anda dapat melihat pratinjau, mengonfigurasi, dan mengelola infrastruktur serta sumber daya cloud secara aman dan efisien. Alat ini memungkinkan Anda membuat dan memperbarui sumber daya di infrastruktur Alibaba Cloud secara otomatis. Topik ini menjelaskan cara membuat dan menghapus instance Service Mesh (ASM) menggunakan Terraform.
Prasyarat
Terraform telah diinstal dan dikonfigurasi pada mesin lokal Anda. Untuk informasi lebih lanjut, lihat Instal dan konfigurasikan Terraform di PC lokal.
Akun Alibaba Cloud Anda telah dikonfigurasi. Variabel lingkungan dibuat untuk menentukan kredensial autentikasi dan informasi wilayah Anda.
# Ganti YOUR_ACCESS_KEY_ID dan YOUR_ACCESS_KEY_SECRET dalam perintah berikut dengan ID dan rahasia AccessKey akun Alibaba Cloud Anda. export ALICLOUD_ACCESS_KEY="YOUR_ACCESS_KEY_ID" export ALICLOUD_SECRET_KEY="YOUR_ACCESS_KEY_SECRET" # Ganti nilai berikut dengan ID wilayah kluster. export ALICLOUD_REGION="cn-beijing" # Jika kluster berada di wilayah AS, konfigurasikan variabel lingkungan berikut untuk menggunakan titik akhir wilayah AS. export ALIBABA_CLOUD_ENDPOINT_SERVICEMESH="servicemesh.us-east-1.aliyuncs.com"CatatanUntuk meningkatkan fleksibilitas dan keamanan manajemen izin, kami sarankan Anda membuat Pengguna Resource Access Management (RAM) bernama Terraform. Kemudian, buat pasangan AccessKey untuk pengguna RAM tersebut dan berikan izin kepada pengguna RAM tersebut. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Berikan Izin kepada Pengguna RAM.
Informasi latar belakang
Untuk informasi lebih lanjut tentang Terraform, kunjungi situs resmi Terraform.
Buat Instance ASM
Buat file konfigurasi bernama main.tf secara lokal.
Jika Anda tidak memiliki virtual private cloud (VPC) atau vSwitch, buat file main.tf yang berisi konten berikut:
terraform { required_providers { alicloud = { source = "aliyun/alicloud" } } } variable "k8s_name_prefix" { description = "Awalan nama yang digunakan untuk membuat Service Mesh (ASM)." default = "tf-asm" } resource "random_uuid" "this" {} # Nama dan konfigurasi sumber daya default. locals { # Nama instans ASM. mesh_name = substr(join("-", [var.k8s_name_prefix, random_uuid.this.result]), 0, 63) # Edisi instans ASM. Nilai yang valid: enterprise dan ultimate, yang masing-masing menunjukkan Edisi Perusahaan dan Edisi Ultimate. mesh_spec = "enterprise" # Nama VPC yang akan dibuat. new_vpc_name = "vpc-for-${local.mesh_name}" # Nama vSwitch yang akan dibuat. new_vsw_name = "vsw-for-${local.mesh_name}" } # Zona tempat Anda dapat membuat vSwitch. data "alicloud_zones" "default" { available_resource_creation = "VSwitch" } # VPC. resource "alicloud_vpc" "default" { vpc_name = local.new_vpc_name } # vSwitch. resource "alicloud_vswitch" "default" { vpc_id = alicloud_vpc.default.id cidr_block = cidrsubnet(alicloud_vpc.default.cidr_block, 8, 2) zone_id = data.alicloud_zones.default.zones.0.id vswitch_name = local.new_vsw_name } # Kueri edisi ASM yang tersedia untuk membuat instans ASM. data "alicloud_service_mesh_versions" "default" { edition = local.mesh_spec == "standard" ? "Default" : "Pro" } # Pilih edisi pertama yang tersedia untuk membuat instans ASM. locals { mesh_version = split(":", data.alicloud_service_mesh_versions.default.ids[0])[1] } # Instans ASM. resource "alicloud_service_mesh_service_mesh" "default" { # Nama instans ASM. service_mesh_name = local.mesh_name # Konfigurasi jaringan instans ASM. network { # ID VPC. vpc_id = alicloud_vpc.default.id # Daftar ID vSwitch. vswitche_list = [alicloud_vswitch.default.id] } # Edisi instans ASM. version = local.mesh_version # Load balancer untuk mengekspos server API dan Istio Pilot dari instans ASM. load_balancer { # Tentukan apakah akan mengekspos load balancer untuk server API instans ASM menggunakan alamat IP elastis (EIP). api_server_public_eip = true } # Konfigurasikan instans ASM dengan mendefinisikan opsi Mesh Config. mesh_config { # Kumpulkan log akses ke Simple Log Service Alibaba Cloud. access_log { enabled = true } # Aktifkan pengumpulan log lapisan kontrol. Untuk mengaktifkan fitur ini, pastikan Anda telah mengaktifkan Simple Log Service. control_plane_log { enabled = true } # Aktifkan Analisis Tracing di Application Real-Time Monitoring Service (ARMS). tracing = true # Jika Analisis Tracing diaktifkan, atur persentase pengambilan sampel. pilot { trace_sampling = 100 } # Aktifkan pemantauan Prometheus. telemetry = true # Aktifkan Topologi Mesh. Untuk mengaktifkan Topologi Mesh, pastikan Anda telah mengaktifkan pemantauan Prometheus. kiali { enabled = true } # Aktifkan fitur audit mesh. Untuk mengaktifkan fitur ini, pastikan Anda telah mengaktifkan Simple Log Service. audit { enabled = true } } # Edisi instans ASM. Nilai yang valid: enterprise dan ultimate, yang masing-masing menunjukkan Edisi Perusahaan dan Edisi Ultimate. cluster_spec = local.mesh_spec }Sesuaikan parameter yang dijelaskan dalam tabel berikut di file main.tf sesuai kebutuhan Anda. Terraform akan secara otomatis memanggil operasi API terkait untuk mendapatkan nilai parameter lainnya.
Parameter
Deskripsi
mesh_name
Nama kustom dari instance Service Mesh.
mesh_spec
Edisi dari instance Service Mesh. Nilai valid:
Standard: Edisi Standar (Gratis).
enterprise: Edisi Enterprise
ultimate: Edisi Ultimate
new_vpc_name
Nama kustom dari VPC.
new_vsw_name
Nama kustom dari vSwitch.
api_server_public_eip
Menentukan apakah akan mengekspos load balancer untuk server API instans Service Mesh menggunakan EIP. Nilai yang valid:
true: mengekspos load balancer untuk server API instans Service Mesh menggunakan EIP.
false: tidak mengekspos load balancer untuk server API instans Service Mesh menggunakan EIP.
Jika Anda telah membuat VPC dan vSwitch, buat file main.tf yang berisi konten berikut:
PentingVPC dan vSwitch harus termasuk dalam wilayah yang Anda tentukan dalam variabel lingkungan ALICLOUD_REGION saat mengonfigurasi Terraform. Jika tidak, Terraform tidak dapat mengenali VPC atau vSwitch tersebut.
terraform { required_providers { alicloud = { source = "aliyun/alicloud" } } } variable "asm_name_prefix" { description = "Awalan nama yang digunakan untuk membuat Service Mesh (ASM)." default = "tf-asm" } resource "random_uuid" "this" {} # Nama dan konfigurasi sumber daya default. locals { # Nama instans ASM. mesh_name = substr(join("-", [var.asm_name_prefix, random_uuid.this.result]), 0, 63) # Edisi instans ASM. Nilai yang valid: enterprise dan ultimate, yang masing-masing menunjukkan Edisi Perusahaan dan Edisi Ultimate. mesh_spec = "enterprise" # Nama VPC yang telah dibuat. vpc_name = "vpc-luying-hangzhou1" # Nama vSwitch yang telah dibuat. vsw_name = "vsw-luying-hangzhou1" } # VPC. data "alicloud_vpcs" "default" { name_regex = local.vpc_name # Nama VPC yang telah dibuat. } # vSwitch. data "alicloud_vswitches" "default" { vpc_id = data.alicloud_vpcs.default.ids[0] } locals { exist_vswitch_ids = [for vsw in data.alicloud_vswitches.default.vswitches : vsw.id if vsw.name == local.vsw_name] } # Kueri edisi ASM yang tersedia untuk membuat instans ASM. data "alicloud_service_mesh_versions" "default" { edition = local.mesh_spec == "standard" ? "Default" : "Pro" } # Pilih edisi pertama yang tersedia untuk membuat instans ASM. locals { mesh_version = split(":", data.alicloud_service_mesh_versions.default.ids[0])[1] } # Instans ASM. resource "alicloud_service_mesh_service_mesh" "default" { # Nama instans ASM. service_mesh_name = local.mesh_name # Konfigurasi jaringan instans ASM. network { # ID VPC. vpc_id = data.alicloud_vpcs.default.ids[0] # Daftar ID vSwitch. vswitche_list = [local.exist_vswitch_ids[0]] } # Edisi instans ASM. version = local.mesh_version # Load balancer untuk mengekspos load balancer untuk server API dan Istio Pilot dari instans ASM. load_balancer { # Tentukan apakah akan mengekspos load balancer untuk server API instans ASM menggunakan EIP. api_server_public_eip = true } # Konfigurasikan instans ASM dengan mendefinisikan opsi Mesh Config. mesh_config { # Kumpulkan log akses ke Simple Log Service Alibaba Cloud. access_log { enabled = true } # Aktifkan pengumpulan log lapisan kontrol. Untuk mengaktifkan fitur ini, pastikan Anda telah mengaktifkan Simple Log Service. control_plane_log { enabled = true } # Aktifkan Analisis Tracing di ARMS. tracing = true # Jika Analisis Tracing diaktifkan, atur persentase pengambilan sampel. pilot { trace_sampling = 100 } # Aktifkan pemantauan Prometheus. telemetry = true # Aktifkan Topologi Mesh. Untuk mengaktifkan Topologi Mesh, pastikan Anda telah mengaktifkan pemantauan Prometheus. kiali { enabled = true } # Aktifkan fitur audit mesh. Untuk mengaktifkan fitur ini, pastikan Anda telah mengaktifkan Simple Log Service. audit { enabled = true } } # Edisi instans ASM. Nilai yang valid: enterprise dan ultimate, yang masing-masing menunjukkan Edisi Perusahaan dan Edisi Ultimate. cluster_spec = local.mesh_spec }Sesuaikan parameter yang dijelaskan dalam tabel berikut di file main.tf sesuai kebutuhan Anda. Terraform akan secara otomatis memanggil operasi API terkait untuk mendapatkan nilai parameter lainnya.
Parameter
Deskripsi
mesh_name
Nama kustom dari instance Service Mesh.
mesh_spec
Edisi dari instance Service Mesh. Nilai valid:
Standard: Edisi Standar (Gratis)
enterprise: Edisi Enterprise
ultimate: Edisi Ultimate
vpc_name
Nama VPC yang dibuat.
vsw_name
Nama vSwitch yang dibuat.
api_server_public_eip
Menentukan apakah akan mengekspos load balancer untuk server API instans Service Mesh menggunakan EIP.
true: mengekspos load balancer untuk server API instans Service Mesh menggunakan EIP.
false: tidak mengekspos load balancer untuk server API instans Service Mesh menggunakan EIP.
Jalankan perintah berikut untuk menginisialisasi lingkungan runtime untuk Terraform:
terraform initKeluaran yang diharapkan:
Initializing the backend... Initializing provider plugins... - Finding aliyun/alicloud versions matching "1.166.0"... - Finding latest version of hashicorp/random... ... Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.Jalankan perintah berikut untuk membuat rencana eksekusi untuk Terraform:
terraform planKeluaran yang diharapkan:
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: ... Plan: 2 to add, 0 to change, 0 to destroy.Jalankan perintah berikut untuk membuat instance ASM menggunakan file main.tf:
terraform applyKeluaran yang diharapkan:
alicloud_service_mesh_service_mesh.example: Refreshing state... ... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:Masukkan yes di sebelah kanan Enter a value. Keluaran yang diharapkan:
... alicloud_service_mesh_service_mesh.default: Creating... alicloud_service_mesh_service_mesh.default: Still creating... [10s elapsed] ... alicloud_service_mesh_service_mesh.example: Creation complete after 2m42s [id=**********] Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Hapus Instance ASM
Untuk menjalankan perintah destroy di Terraform guna menghapus instance ASM, Anda harus masuk ke direktori tempat file main.tf berada.
Masuk ke direktori tempat file main.tf berada dan jalankan perintah berikut untuk menghapus instance ASM:
terraform destroyKeluaran yang diharapkan:
...
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: Masukkan yes di sebelah kanan Enter a value. Keluaran yang diharapkan:
...
Destroy complete! Resources: 2 destroyed.Ubah atribut instance ASM
Anda dapat mengubah definisi atribut dalam file .tf, lalu menjalankan perintah terraform apply untuk menerapkan perubahan ke instance ASM. Contoh berikut mengubah atribut http10_enabled. Anda dapat menggunakan contoh ini sebagai referensi untuk mengubah atribut instance ASM melalui Terraform.
Contoh ini menggunakan file .tf untuk skenario di mana VPC dan switch virtual sudah tersedia. Ubah nilai properti
mesh_config.pilot.http10_enabledpada sumber daya service mesh menjaditrue.terraform { required_providers { alicloud = { source = "aliyun/alicloud" } } } variable "asm_name_prefix" { description = "Awalan nama yang digunakan untuk membuat Service Mesh (ASM)." default = "tf-asm" } resource "random_uuid" "this" {} # Nama dan konfigurasi sumber daya default. locals { # Nama instans ASM. mesh_name = substr(join("-", [var.asm_name_prefix, random_uuid.this.result]), 0, 63) # Edisi instans ASM. Nilai yang valid: enterprise dan ultimate, yang masing-masing menunjukkan Edisi Perusahaan dan Edisi Ultimate. mesh_spec = "enterprise" # Nama VPC yang telah dibuat. vpc_name = "prod-hz-vpc" # Nama vSwitch yang telah dibuat. vsw_name = "prod-hz-vpc-default" } # VPC. data "alicloud_vpcs" "default" { name_regex = local.vpc_name # Nama VPC yang telah dibuat. } # vSwitch. data "alicloud_vswitches" "default" { vpc_id = data.alicloud_vpcs.default.ids[0] } locals { exist_vswitch_ids = [for vsw in data.alicloud_vswitches.default.vswitches : vsw.id if vsw.name == local.vsw_name] } # Kueri edisi ASM yang tersedia untuk membuat instans ASM. data "alicloud_service_mesh_versions" "default" { edition = local.mesh_spec == "standard" ? "Default" : "Pro" } # Pilih edisi pertama yang tersedia untuk membuat instans ASM. locals { mesh_version = split(":", data.alicloud_service_mesh_versions.default.ids[0])[1] } # Instans ASM. resource "alicloud_service_mesh_service_mesh" "default" { # Nama instans ASM. service_mesh_name = local.mesh_name # Konfigurasi jaringan instans ASM. network { # ID VPC. vpc_id = data.alicloud_vpcs.default.ids[0] # Daftar ID vSwitch. vswitche_list = [local.exist_vswitch_ids[0]] } # Edisi instans ASM. version = local.mesh_version # Load balancer untuk mengekspos server API dan Istio Pilot dari instans ASM. load_balancer { # Tentukan apakah akan mengekspos load balancer untuk server API instans ASM menggunakan EIP. api_server_public_eip = true } # Konfigurasikan instans ASM dengan mendefinisikan opsi Mesh Config. mesh_config { # Kumpulkan log akses ke Simple Log Service Alibaba Cloud. access_log { enabled = true } # Aktifkan pengumpulan log lapisan kontrol. Untuk mengaktifkan fitur ini, pastikan Anda telah mengaktifkan Simple Log Service. control_plane_log { enabled = true project = "mesh-log-cab09b566d4a64c1fa05271d5365495f1" } # Aktifkan Analisis Tracing di ARMS. tracing = true # Jika Analisis Tracing diaktifkan, atur persentase pengambilan sampel. pilot { trace_sampling = 100 http10_enabled = true } # Aktifkan pemantauan Prometheus. telemetry = true # Aktifkan Topologi Mesh. Untuk mengaktifkan Topologi Mesh, pastikan Anda telah mengaktifkan pemantauan Prometheus. kiali { enabled = true } # Aktifkan fitur audit mesh. Untuk mengaktifkan fitur ini, pastikan Anda telah mengaktifkan Simple Log Service. audit { enabled = true } } # Edisi instans ASM. Nilai yang valid: enterprise dan ultimate, yang masing-masing menunjukkan Edisi Perusahaan dan Edisi Ultimate. cluster_spec = local.mesh_spec }Jalankan
terraform apply. Keluarannya menunjukkan perubahan yang direncanakan untuk bidang tersebut.terraform apply random_uuid.this: Refreshing state... [id=6ab24265-2381-dad9-3be5-351329c5665a] data.alicloud_vpcs.default: Reading... data.alicloud_service_mesh_versions.default: Reading... data.alicloud_service_mesh_versions.default: Read complete after 1s [id=605899410] data.alicloud_vpcs.default: Read complete after 1s [id=2909606812] data.alicloud_vswitches.default: Reading... data.alicloud_vswitches.default: Read complete after 0s [id=866499268] alicloud_service_mesh_service_mesh.default: Refreshing state... [id=cab09b566d4a64c1fa05271d5365495f1] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # alicloud_service_mesh_service_mesh.default will be updated in-place ~ resource "alicloud_service_mesh_service_mesh" "default" { id = "cab09b566d4a64c1fa05271d5365495f1" # (6 unchanged attributes hidden) ~ mesh_config { # (5 unchanged attributes hidden) ~ pilot { ~ http10_enabled = false -> true # (1 unchanged attribute hidden) } # (7 unchanged blocks hidden) } # (2 unchanged blocks hidden) } Plan: 0 to add, 1 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:Masukkan
yesuntuk menerapkan perubahan....Omit irrelevant content... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes alicloud_service_mesh_service_mesh.default: Modifying... [id=cab09b566d4a64c1fa05271d5365495f1] alicloud_service_mesh_service_mesh.default: Still modifying... [id=cab09b566d4a64c1fa05271d5365495f1, 10s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=cab09b566d4a64c1fa05271d5365495f1, 20s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=cab09b566d4a64c1fa05271d5365495f1, 30s elapsed] alicloud_service_mesh_service_mesh.default: Modifications complete after 37s [id=cab09b566d4a64c1fa05271d5365495f1]
Tambah atau hapus kluster Kubernetes
Anda dapat memodifikasi array cluster_ids dalam file .tf. Untuk menambahkan kluster agar dikelola oleh ASM, tambahkan ID-nya ke dalam array. Untuk menghapus kluster dari ASM, hapus ID-nya dari array. Setelah itu, jalankan terraform apply untuk menerapkan perubahan ke instance ASM.
Contoh berikut menunjukkan cara menambahkan kluster ke instance ASM. Modifikasi
cluster_idspada sumber daya service mesh dengan menambahkan ID kluster ke dalam array:......Omit irrelevant content...... # Instans ASM. resource "alicloud_service_mesh_service_mesh" "default" { # Nama service mesh. service_mesh_name = local.mesh_name # Konfigurasi jaringan service mesh. network { # ID VPC. vpc_id = data.alicloud_vpcs.default.ids[0] # ID switch virtual. vswitche_list = [local.exist_vswitch_ids[0]] } # Versi service mesh. version = local.mesh_version # Konfigurasi load balancer untuk API Server dan Pilot service mesh. load_balancer { # Menentukan apakah akan menggunakan EIP untuk mengekspos API Server melalui load balancer. api_server_public_eip = true } cluster_ids = [ "c94a1a1d968e04c55861b8747********" # Tambahkan ID kluster ke dalam array. ] ......Omit irrelevant content...... } ......Omit irrelevant content......Jalankan terraform apply. Keluarannya menunjukkan perubahan yang direncanakan pada array ID kluster di bidang data.
random_uuid.this: Refreshing state... [id=6ab24265-2381-dad9-3be5-351329c5665a] data.alicloud_service_mesh_versions.default: Reading... data.alicloud_vpcs.default: Reading... data.alicloud_vpcs.default: Read complete after 1s [id=2909606812] data.alicloud_vswitches.default: Reading... data.alicloud_vswitches.default: Read complete after 0s [id=866499268] data.alicloud_service_mesh_versions.default: Read complete after 1s [id=3077056360] alicloud_service_mesh_service_mesh.default: Refreshing state... [id=c71fe2f2301234701b2e4116397426342] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # alicloud_service_mesh_service_mesh.default will be updated in-place ~ resource "alicloud_service_mesh_service_mesh" "default" { ~ cluster_ids = [ + "c94a1a1d968e04c55861b8747********", ] id = "c71fe2f2301234701b2e4116397426342" tags = {} # (6 unchanged attributes hidden) } Plan: 0 to add, 1 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:Masukkan
yesuntuk menerapkan perubahan....Omit irrelevant content... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes alicloud_service_mesh_service_mesh.default: Modifying... [id=c71fe2f2301234701b2e4116397426342] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 10s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 20s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 30s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 40s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 50s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 1m0s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 1m10s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 1m20s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 1m30s elapsed] alicloud_service_mesh_service_mesh.default: Still modifying... [id=c71fe2f2301234701b2e4116397426342, 1m40s elapsed] alicloud_service_mesh_service_mesh.default: Modifications complete after 1m44s [id=c71fe2f2301234701b2e4116397426342] Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Sumber daya dan sumber data Terraform
Tabel berikut menjelaskan sumber daya dan sumber data Terraform yang dapat digunakan untuk mengelola sumber daya ASM.
Tipe | Nama | Deskripsi |
Sumber daya | Mengelola instance ASM. | |
Mengonfigurasi izin pada instance ASM. | ||
Sumber Data | Mengkueri semua instance ASM. | |
Mengkueri semua versi Service Mesh yang tersedia. |
Apa yang harus saya lakukan jika ada prompt yang menunjukkan bahwa beberapa field akan dihapus saat saya menjalankan perintah terraform apply?
Untuk menyederhanakan operasi, server memberikan nilai default ke beberapa properti ASM meskipun Anda tidak menentukannya saat pembuatan. Hal ini mirip dengan tag atribut Computed di Terraform. Namun, jika properti-properti ini ditetapkan sebagai Computed, nilainya tidak dapat diubah menjadi nilai kosong, seperti string kosong, angka 0, atau nilai Boolean false. Agar properti-properti ini dapat diubah menjadi nilai kosong, penyedia Terraform ASM tidak menetapkannya sebagai Computed. Saat Anda menjalankan terraform apply, server mengembalikan properti-properti ini. Jika properti tersebut tidak dideklarasikan secara eksplisit dalam file .tf Anda, Terraform menganggap Anda ingin menghapus nilainya. Jika Anda tidak ingin menghapus properti ini, tambahkan secara manual ke file .tf Anda sesuai permintaan, lalu jalankan kembali terraform apply.