全部产品
Search
文档中心

Auto Scaling:Gunakan Terraform untuk membuat sumber daya Auto Scaling

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan Template Terraform untuk membuat grup skala, konfigurasi skala, aturan skala, dan sumber daya Auto Scaling lainnya saat pertama kali menggunakan Auto Scaling.

Catatan

Anda dapat menjalankan kode contoh dengan beberapa klik. Jalankan Kode Contoh.

Sebelum memulai

  • Buat Pengguna Resource Access Management (RAM) dan pasangan AccessKey. Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya yang dimiliki akun tersebut. Jika kredensial dari akun Alibaba Cloud bocor, risiko keamanan mungkin timbul. Kami menyarankan Anda menggunakan pengguna RAM dan membuat pasangan AccessKey untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Buat Pasangan AccessKey.

  • Berikan izin kepada pengguna RAM. RAM memungkinkan kontrol efisien atas izin sumber daya cloud, mendukung kolaborasi multi-pengguna yang aman. Dengan menerapkan prinsip hak istimewa minimal (PoLP), Anda dapat memberikan pengguna hanya akses yang diperlukan, mengurangi risiko keamanan dari izin berlebihan. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:CreateSecurityGroup",
                    "ecs:ModifySecurityGroupPolicy",
                    "ecs:DescribeSecurityGroups",
                    "ecs:ListTagResources",
                    "ecs:DeleteSecurityGroup",
                    "ecs:DescribeSecurityGroupAttribute",
                    "ecs:AuthorizeSecurityGroup",
                    "ecs:RevokeSecurityGroup"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "vpc:DescribeVpcAttribute",
                    "vpc:DescribeRouteTableList",
                    "vpc:DescribeVSwitchAttributes",
                    "vpc:DeleteVpc",
                    "vpc:DeleteVSwitch",
                    "vpc:CreateVpc",
                    "vpc:CreateVSwitch"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ess:CreateScalingGroup",
                    "ess:DescribeScalingGroups",
                    "ess:ListTagResources",
                    "ess:DeleteScalingGroup",
                    "ess:ModifyScalingGroup",
                    "ess:CreateScalingConfiguration",
                    "ess:DescribeScalingConfigurations",
                    "ess:ModifyScalingConfiguration",
                    "ess:CreateScalingRule",
                    "ess:DescribeScalingRules",
                    "ess:DeleteScalingRule"
                ],
                "Resource": "*"
            }
        ]
    }
  • Siapkan lingkungan runtime Terraform dengan menggunakan 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 menginstal Terraform. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan nyaman 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 nyaman dengan biaya rendah.

    • Instal dan Konfigurasikan Terraform pada Mesin Lokal Anda. Metode ini cocok untuk skenario di mana kondisi jaringan buruk atau lingkungan pengembangan kustom digunakan.

Sumber daya yang diperlukan

Gunakan Terraform untuk membuat sumber daya Auto Scaling

Dalam contoh ini, Terraform digunakan untuk membuat sumber daya Auto Scaling seperti grup skala, konfigurasi skala, dan aturan skala.

  1. Buat direktori kerja dan file bernama main.tf di bawah direktori tersebut. Kemudian, salin konten berikut ke file main.tf.

    variable "region" {
      default = "cn-heyuan"
    }
    
    variable "instance_type" {
      default = "ecs.hfc7.xlarge"
    }
    
    variable "image_id" {
      default = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
    }
    
    variable "zone_id" {
      default = "cn-heyuan-b"
    }
    
    provider "alicloud" {
      region = var.region
    }
    
    # Buat sebuah VPC. 
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "tf-test-vpc-wjt"
      cidr_block = "172.16.0.0/12" # Rencanakan blok CIDR privat untuk VPC. 
    }
    
    # Buat sebuah vSwitch dalam VPC. 
    resource "alicloud_vswitch" "vsw" {
      vpc_id       = alicloud_vpc.vpc.id
      cidr_block = "172.16.0.0/21" # Rencanakan blok CIDR privat untuk vSwitch. 
      zone_id=var.zone_id# Pilih zona untuk vSwitch. 
      vswitch_name = "tf-test-vswitch-wjt"
    }
    
    # Buat sebuah grup keamanan. 
    resource "alicloud_security_group" "security" {
      name        = "tf_test_security"
      description = "New security group"
      vpc_id      = alicloud_vpc.vpc.id
    }
    
    # Tambahkan aturan grup keamanan yang mengizinkan akses dari semua alamat ke grup keamanan. 
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "1/65535"
      priority          = 1
      security_group_id = alicloud_security_group.security.id
      cidr_ip           = "0.0.0.0/0"
    }
    
    # Dalam contoh ini, sebuah grup skala yang dapat berisi hingga 100 instance dibuat. 
    resource "alicloud_ess_scaling_group" "group" {
      scaling_group_name = "tf_test_scalinggroup"
      min_size           = 0
      max_size           = 100
      vswitch_ids        = [alicloud_vswitch.vsw.id]
    }
    
    # Dalam contoh ini, sebuah konfigurasi skala tipe ECS dibuat. 
    resource "alicloud_ess_scaling_configuration" "configuration" {
      scaling_group_id           = alicloud_ess_scaling_group.group.id
      instance_type              = var.instance_type
      image_id                   = var.image_id
      security_group_id          = alicloud_security_group.security.id
      scaling_configuration_name = "tf_test_scalingconfiguration"
      system_disk_category       = "cloud_essd"
      spot_strategy              = "SpotWithPriceLimit"
      active                     = true
      force_delete               = true
    }
    
    # Buat sebuah aturan skala.
    resource "alicloud_ess_scaling_rule" "rule" {
      scaling_group_id = alicloud_ess_scaling_group.group.id
      adjustment_type  = "QuantityChangeInCapacity"
      adjustment_value = 1
    }
  2. Jalankan perintah berikut untuk menginisialisasi lingkungan runtime untuk Terraform:

    terraform init

    Jika informasi berikut dikembalikan, Terraform telah diinisialisasi:

    Menginisialisasi backend...
    
    Menginisialisasi plugin penyedia...
    - Memeriksa plugin penyedia yang tersedia...
    - Mengunduh plugin untuk penyedia "alicloud" (hashicorp/alicloud) 1.90.1...
    ...
    
    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 sumber daya:

    terraform apply

    Selama eksekusi perintah, masukkan yes saat diminta dan tekan tombol Enter. Tunggu hingga perintah selesai dijalankan. Jika informasi berikut dikembalikan, sumber daya Auto Scaling telah dibuat.

    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_security_group_rule.allow_all_tcp: Pembuatan selesai setelah 0 detik [id=sg-f8z1mes******:ingress:tcp:1/65535:intranet:0.0.0.0/0:accept:1]
    alicloud_vswitch.vsw: Pembuatan selesai setelah 3 detik [id=vsw-f8ztgc4******]
    alicloud_ess_scaling_group.group: Membuat...
    alicloud_ess_scaling_group.group: Pembuatan selesai setelah 2 detik [id=asg-f8z9mo******]
    ...
    
    Penerapan selesai!  Sumber daya: 7 ditambahkan, 0 diubah, 0 dihapus.
  5. Verifikasi Hasil

    Jalankan perintah terraform show

    Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat menggunakan Terraform:

    terraform show

    image

    Masuk ke konsol Auto Scaling

    Anda dapat masuk ke Konsol Auto Scaling untuk melihat grup skala yang dibuat.

    image

Hapus sumber daya

Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola menggunakan Terraform, jalankan perintah berikut untuk melepaskan sumber daya. Untuk informasi lebih lanjut, lihat Perintah Umum.

terraform destroy

Kode contoh lengkap

Catatan

Anda dapat menjalankan kode contoh dengan satu klik. Jalankan Kode Contoh.

Kode contoh

variable "region" {
  default = "cn-heyuan"
}

variable "instance_type" {
  default = "ecs.hfc7.xlarge"
}

variable "image_id" {
  default = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
}

variable "zone_id" {
  default = "cn-heyuan-b"
}

provider "alicloud" {
  region = var.region
}

# Buat sebuah VPC. 
resource "alicloud_vpc" "vpc" {
  vpc_name   = "tf-test-vpc-wjt"
  cidr_block = "172.16.0.0/12" # Rencanakan blok CIDR privat untuk VPC. 
}

# Buat sebuah vSwitch dalam VPC. 
resource "alicloud_vswitch" "vsw" {
  vpc_id       = alicloud_vpc.vpc.id
  cidr_block = "172.16.0.0/21" # Rencanakan blok CIDR privat untuk vSwitch. 
  zone_id=var.zone_id# Pilih zona untuk vSwitch. 
  vswitch_name = "tf-test-vswitch-wjt"
}

# Buat sebuah grup keamanan. 
resource "alicloud_security_group" "security" {
  name        = "tf_test_security"
  description = "New security group"
  vpc_id      = alicloud_vpc.vpc.id
}

# Tambahkan aturan grup keamanan yang mengizinkan akses dari semua alamat ke grup keamanan. 
resource "alicloud_security_group_rule" "allow_all_tcp" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "1/65535"
  priority          = 1
  security_group_id = alicloud_security_group.security.id
  cidr_ip           = "0.0.0.0/0"
}

# Dalam contoh ini, sebuah grup skala yang dapat berisi hingga 100 instance dibuat. 
resource "alicloud_ess_scaling_group" "group" {
  scaling_group_name = "tf_test_scalinggroup"
  min_size           = 0
  max_size           = 100
  vswitch_ids        = [alicloud_vswitch.vsw.id]
}

# Dalam contoh ini, sebuah konfigurasi skala tipe ECS dibuat. 
resource "alicloud_ess_scaling_configuration" "configuration" {
  scaling_group_id           = alicloud_ess_scaling_group.group.id
  instance_type              = var.instance_type
  image_id                   = var.image_id
  security_group_id          = alicloud_security_group.security.id
  scaling_configuration_name = "tf_test_scalingconfiguration"
  system_disk_category       = "cloud_essd"
  spot_strategy              = "SpotWithPriceLimit"
  active                     = true
  force_delete               = true
}

# Buat sebuah aturan skala.
resource "alicloud_ess_scaling_rule" "rule" {
  scaling_group_id = alicloud_ess_scaling_group.group.id
  adjustment_type  = "QuantityChangeInCapacity"
  adjustment_value = 1
}