全部产品
Search
文档中心

ApsaraDB for MongoDB:Integrasikan ApsaraDB for MongoDB menggunakan Terraform

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan Terraform untuk membuat ApsaraDB for MongoDB.

Catatan

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

image.png

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.

Penting

Anda harus menginstal Terraform versi 0.12.28 atau lebih baru. Anda dapat menjalankan perintah terraform --version untuk memeriksa versi Terraform.

Catatan

Biaya akan dikenakan untuk sumber daya tertentu dalam contoh ini. Batalkan langganan sumber daya tersebut jika Anda tidak lagi membutuhkannya.

Sumber daya yang Diperlukan

Gunakan Terraform untuk membuat instance ApsaraDB for MongoDB.

  1. Buat direktori kerja dan file konfigurasi bernama main.tf di 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.

  2. Jalankan perintah berikut untuk menginisialisasi Terraform:

    terraform init

    Jika 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.
  3. Buat rencana eksekusi dan pratinjau perubahan.

    terraform plan
  4. Jalankan perintah berikut untuk membuat instance ApsaraDB for MongoDB.

    terraform apply

    Selama eksekusi, masukkan yes sesuai 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.
  5. Verifikasi hasilnya.

    Jalankan perintah terraform show

    Jalankan perintah berikut untuk menanyakan sumber daya yang dibuat oleh Terraform:

    terraform show

    image

    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.image

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 destroy

Kode contoh

Catatan

Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik.

Kode contoh

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) 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"
     ]
  # (Opsional) Jenis penyimpanan instance. Konfigurasi ini tersedia di Terraform 1.199.0 dan versi lebih baru. 
  # storage_type        = "cloud_auto"   
}
# 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 melihat kode contoh lainnya, kunjungi GitHub.