Topik ini menjelaskan cara menggunakan Terraform untuk membuat ApsaraDB for MongoDB.
Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik.
Untuk informasi lebih lanjut tentang Terraform, lihat Apa itu Terraform?. Untuk detail tipe-tipe sumber daya MongoDB yang didukung oleh Terraform, lihat Ikhtisar Integrasi atau Penyedia Alibaba Cloud.
Struktur Sumber Daya

Anda dapat membuat virtual private cloud (VPC), vSwitch, dan instance set replika di wilayah tertentu.
Prasyarat
Akun Alibaba Cloud memiliki izin penuh terhadap semua sumber daya yang dimiliki akun tersebut. Jika kredensial akun Alibaba Cloud bocor, risiko keamanan mungkin terjadi. Kami menyarankan Anda menggunakan Pengguna Resource Access Management (RAM) dan membuat pasangan AccessKey untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Buat Pasangan AccessKey.
Izin AliyunMongoDBFullAccess diberikan kepada pengguna RAM. Izin ini digunakan untuk mengelola ApsaraDB for MongoDB, serta virtual private clouds (VPC). Contoh berikut menunjukkan cara memberikan izin kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.
{ "Version": "1", "Statement": [ { "Action": "dds:*", "Resource": "*", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVpcs", "vpc:DescribeVSwitches", "vpc:CreateVpc", "vpc:DeleteVpc", "vpc:ModifyVpcAttribute", "vpc:CreateVSwitch", "vpc:DeleteVSwitch", "vpc:ModifyVSwitchAttribute" ], "Resource": "*", "Effect": "Allow" }, { "Action": "hdm:*", "Resource": "acs:dds:*:*:*", "Effect": "Allow" }, { "Action": "dms:LoginDatabase", "Resource": "acs:dds:*:*:*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "mongodb.aliyuncs.com" } } } ] }Persiapkan lingkungan runtime untuk Terraform dengan salah satu metode berikut:
Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan Terraform Explorer, lingkungan runtime online untuk Terraform. Anda dapat menggunakan Terraform setelah masuk ke Terraform Explorer tanpa perlu menginstalnya. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan mudah tanpa biaya tambahan.
Gunakan Terraform di Cloud Shell: Terraform sudah diinstal sebelumnya di Cloud Shell dan kredensial identitas telah dikonfigurasi. Anda dapat langsung menjalankan perintah Terraform di Cloud Shell. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan mudah dengan biaya rendah.
Instal dan konfigurasikan Terraform di mesin lokal Anda: Metode ini cocok untuk skenario di mana koneksi jaringan tidak stabil atau lingkungan pengembangan kustom diperlukan.
Anda harus menginstal Terraform versi 0.12.28 atau lebih baru. Anda dapat menjalankan perintah terraform --version untuk memeriksa versi Terraform.
Biaya akan dikenakan untuk sumber daya tertentu dalam contoh ini. Batalkan langganan sumber daya tersebut jika Anda tidak lagi membutuhkannya.
Sumber daya yang Diperlukan
alicloud_mongodb_instance: tipe sumber daya yang digunakan untuk membuat instance set replika.
alicloud_mongodb_sharding_instance: tipe sumber daya yang digunakan untuk membuat instance kluster sharding.
Gunakan Terraform untuk membuat instance ApsaraDB for MongoDB.
Buat direktori kerja dan file konfigurasi bernama
main.tfdi direktori tersebut. File main.tf adalah file utama Terraform yang mendefinisikan sumber daya yang ingin Anda deploy.Instance mandiri
variable "region" { default = "cn-heyuan" } provider "alicloud" { region = var.region } # Deklarasikan variabel bernama name. variable "name" { default = "terraform-example-1125" } variable "engine_version" { default = "7.0" } variable "db_instance_class" { default = "mdb.shard.2x.xlarge.d" } # Tentukan parameter alicloud_mongodb_zones untuk menanyakan informasi zona. data "alicloud_mongodb_zones" "default" { } # Tetapkan parameter zone_id ke ID zona terakhir dalam nilai parameter alicloud_mongodb_zones. locals { index = length(data.alicloud_mongodb_zones.default.zones) - 1 zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id } # Buat VPC. resource "alicloud_vpc" "vpc1" { vpc_name = var.name cidr_block = "172.16.0.0/12" } # Buat vSwitch di VPC di zona yang ditentukan oleh parameter local.zone_id. resource "alicloud_vswitch" "default" { vswitch_name = var.name cidr_block = "172.16.20.0/24" vpc_id = alicloud_vpc.vpc1.id zone_id = local.zone_id } # Gunakan VPC dan vSwitch untuk membuat sumber daya mandiri. resource "alicloud_mongodb_instance" "singleNode" { # (Diperlukan) Versi mesin database dari instance. engine_version = var.engine_version # (Diperlukan) Tipe instance. db_instance_class = var.db_instance_class # (Diperlukan) Kapasitas penyimpanan instance. Kapasitas penyimpanan adalah bilangan bulat. Unit: GB. db_instance_storage = 20 # Jenis jaringan instance. network_type = "VPC" # (Opsional) ID vSwitch instance di VPC. vSwitch baru diperlukan. vswitch_id = alicloud_vswitch.default.id # vpc_id vpc_id = alicloud_vpc.vpc1.id # (Opsional) Zona tempat instance berada. Zona baru diperlukan. zone_id = local.zone_id # Nama instance. name = var.name # (Opsional) Jenis penyimpanan instance. Konfigurasi ini tersedia di Terraform 1.199.0 dan versi lebih baru. # storage_type = "cloud_auto" # (Opsional) Tag yang ingin Anda tetapkan ke sumber daya. # tags = { # Created = "TF" # For = "example" # } # (Opsional) Alamat IP yang diizinkan mengakses semua database instance. Daftar alamat IP ditampilkan. # security_ip_list = [ # "10.168.1.12", # "100.69.7.112" # ] }Untuk informasi lebih lanjut tentang cara mengonfigurasi tipe sumber daya
alicloud_mongodb_instance, lihat alicloud_mongodb_instance.Instance set replika
variable "region" { default = "cn-heyuan" } provider "alicloud" { region = var.region } # Deklarasikan variabel bernama name. variable "name" { default = "terraform-example-1125" } variable "engine_version" { default = "7.0" } variable "db_instance_class" { default = "mdb.shard.2x.xlarge.d" } # Tentukan parameter alicloud_mongodb_zones untuk menanyakan informasi zona. data "alicloud_mongodb_zones" "default" { } # Tetapkan parameter zone_id ke ID zona terakhir dalam nilai parameter alicloud_mongodb_zones. locals { index = length(data.alicloud_mongodb_zones.default.zones) - 1 zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id } # Buat VPC. resource "alicloud_vpc" "vpc1" { vpc_name = var.name cidr_block = "172.16.0.0/12" } # Buat vSwitch di VPC di zona yang ditentukan oleh parameter local.zone_id. resource "alicloud_vswitch" "default" { vswitch_name = var.name cidr_block = "172.16.20.0/24" vpc_id = alicloud_vpc.vpc1.id zone_id = local.zone_id } # Gunakan VPC dan vSwitch untuk membuat sumber daya set replika. resource "alicloud_mongodb_instance" "default" { engine_version = var.engine_version db_instance_class = var.db_instance_class db_instance_storage = 20 network_type = "VPC" vswitch_id = alicloud_vswitch.default.id vpc_id = alicloud_vpc.vpc1.id security_ip_list = ["10.168.1.12", "100.69.7.112"] name = var.name tags = { Created = "TF" For = "example" } }Untuk informasi lebih lanjut tentang cara mengonfigurasi tipe sumber daya
alicloud_mongodb_instance, lihat alicloud_mongodb_instance.Instance kluster sharding
variable "region" { default = "cn-heyuan" } provider "alicloud" { region = var.region } # Deklarasikan variabel bernama name. variable "name" { default = "terraform-example-1125" } # Tentukan parameter alicloud_mongodb_zones untuk menanyakan informasi zona. data "alicloud_mongodb_zones" "default" { } # Tetapkan parameter zone_id ke ID zona terakhir dalam nilai parameter alicloud_mongodb_zones. locals { index = length(data.alicloud_mongodb_zones.default.zones) - 1 zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id } # Buat VPC. resource "alicloud_vpc" "vpc1" { vpc_name = var.name cidr_block = "172.16.0.0/12" } # Buat vSwitch di VPC di zona yang ditentukan oleh parameter local.zone_id. resource "alicloud_vswitch" "default" { vswitch_name = var.name cidr_block = "172.16.20.0/24" vpc_id = alicloud_vpc.vpc1.id zone_id = local.zone_id } # Gunakan VPC dan vSwitch untuk membuat sumber daya kluster sharding. resource "alicloud_mongodb_sharding_instance" "default" { # (Diperlukan) Versi mesin database dari instance. engine_version = "7.0" # (Opsional) ID vSwitch instance di VPC. vSwitch baru diperlukan. vswitch_id = alicloud_vswitch.default.id # Jenis jaringan instance. network_type = "VPC" # vpc_id vpc_id = alicloud_vpc.vpc1.id # Nama instance. name = var.name # Zona tempat instance berada. zone_id = local.zone_id # Definisikan node mongos instance. Jumlah node mongos yang dapat Anda beli adalah 2 hingga 32. Anda dapat menggunakan parameter mongo_list untuk mengonfigurasi node mongos. mongo_list { # (Diperlukan) Tipe instance node mongos. node_class = "mdb.shard.2x.xlarge.d" } mongo_list { node_class = "mdb.shard.2x.xlarge.d" } # (Diperlukan) Definisikan shard instance. Jumlah shard yang dapat Anda beli adalah 2 hingga 32. Anda dapat menggunakan parameter mongo_list untuk mengonfigurasi shard. shard_list { # (Diperlukan) Tipe instance shard. node_class = "mdb.shard.2x.xlarge.d" # (Diperlukan) Kapasitas penyimpanan shard. Kapasitas penyimpanan adalah bilangan bulat. node_storage = "20" } shard_list { node_class = "mdb.shard.2x.xlarge.d" node_storage = "20" # Jumlah node baca saja di shard. Nilai default: 0. Nilai valid: 0 hingga 5. readonly_replicas = "1" } config_server_list { # Definisikan tipe instance komponen ConfigServer. Nilai valid: mdb.shard.2x.xlarge.d dan dds.cs.mid. node_class ="mdb.shard.2x.xlarge.d" # Definisikan kapasitas penyimpanan komponen ConfigServer. node_storage = "20" } # tags = { Created = "TF" For = "Example" } }Untuk informasi lebih lanjut tentang cara mengonfigurasi tipe sumber daya
alicloud_mongodb_sharding_instance, lihat alicloud_mongodb_sharding_instance.Jalankan perintah berikut untuk menginisialisasi
Terraform:terraform initJika informasi berikut dikembalikan, Terraform berhasil diinisialisasi.
Menginisialisasi backend... Menginisialisasi plugin penyedia... - Mencari versi terbaru hashicorp/alicloud... - Menginstal hashicorp/alicloud v1.234.0... - Terinstal hashicorp/alicloud v1.234.0 (ditandatangani oleh HashiCorp) Terraform telah membuat file kunci .terraform.lock.hcl untuk mencatat pemilihan penyedia yang dibuat di atas. Sertakan file ini di repositori kontrol versi Anda sehingga Terraform dapat menjamin membuat pilihan yang sama secara default ketika Anda menjalankan "terraform init" di masa mendatang. Terraform telah berhasil diinisialisasi! Anda sekarang dapat mulai bekerja dengan Terraform. Coba jalankan "terraform plan" untuk melihat perubahan apa pun yang diperlukan untuk infrastruktur Anda. Semua perintah Terraform seharusnya sekarang berfungsi. Jika Anda pernah mengatur atau mengubah modul atau konfigurasi backend untuk Terraform, jalankan ulang perintah ini untuk menginisialisasi ulang direktori kerja Anda. Jika Anda lupa, perintah lain akan mendeteksinya dan mengingatkan Anda untuk melakukannya jika perlu.Buat rencana eksekusi dan pratinjau perubahan.
terraform planJalankan perintah berikut untuk membuat instance ApsaraDB for MongoDB.
terraform applySelama eksekusi, masukkan
yessesuai petunjuk dan tekan tombol Enter. Tunggu hingga perintah berhasil dijalankan. Jika informasi berikut dikembalikan, instance ApsaraDB for MongoDB berhasil dibuat.Plan: 3 untuk ditambahkan, 0 untuk diubah, 0 untuk dihapus. Apakah Anda ingin melakukan tindakan ini? Terraform akan melakukan tindakan yang dijelaskan di atas. Hanya 'yes' yang akan diterima untuk menyetujui. Masukkan nilai: yes alicloud_vpc.vpc1: Membuat... alicloud_vpc.vpc1: Pembuatan selesai setelah 6 detik [id=vpc-f8zov2h1snsl2bm9qz***] alicloud_vswitch.default: Membuat... alicloud_vswitch.default: Pembuatan selesai setelah 3 detik [id=vsw-f8zswqowidqw16ypc2***] alicloud_mongodb_instance.singleNode: Membuat... alicloud_mongodb_instance.singleNode: Masih membuat... [10 detik berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [20 detik berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [30 detik berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [40 detik berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [50 detik berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [1m0s berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [1m10s berlalu] ... alicloud_mongodb_instance.singleNode: Masih membuat... [14m11s berlalu] alicloud_mongodb_instance.singleNode: Masih membuat... [14m21s berlalu] alicloud_mongodb_instance.singleNode: Pembuatan selesai setelah 14m29s [id=dds-f8z3a787aea1c***] Penerapan selesai! Sumber daya: 3 ditambahkan, 0 diubah, 0 dihapus.Verifikasi hasilnya.
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan sumber daya yang dibuat oleh Terraform:
terraform show
Masuk ke konsol ApsaraDB for MongoDB
Setelah pembuatan, Anda dapat memanggil Operasi API, menggunakan SDK, atau masuk ke konsol ApsaraDB for MongoDB untuk memeriksa apakah operasi pembuatan telah selesai.

Lepaskan sumber daya
Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola oleh Terraform, jalankan perintah berikut untuk melepaskan sumber daya. Untuk informasi lebih lanjut tentang perintah terraform destroy, lihat Perintah Umum.
terraform destroyKode contoh
Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik.
Kode contoh
Untuk melihat kode contoh lainnya, kunjungi GitHub.