Topik ini menjelaskan cara menggunakan Terraform untuk membuat sumber daya Auto Scaling pertama Anda, seperti grup penskalaan, konfigurasi penskalaan, dan aturan penskalaan.
Anda dapat menjalankan kode sampel pada topik ini dengan sekali klik. Run Sample Code
Prasyarat
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber dayanya, sehingga menimbulkan risiko keamanan signifikan jika kredensial akun tersebut bocor. Kami menyarankan agar Anda menggunakan pengguna RAM dan membuat AccessKey untuk pengguna tersebut. Untuk informasi selengkapnya, lihat Create a RAM user dan Create an AccessKey.
-
Otorisasi RAM membantu Anda mengelola izin akses terhadap sumber daya cloud Anda. Fitur ini mendukung kolaborasi multi-pengguna dan memungkinkan Anda memberikan kepada pengguna hanya izin minimum yang diperlukan guna mencegah kerentanan keamanan akibat hak istimewa berlebihan. Untuk informasi selengkapnya, lihat Manage RAM user permissions.
{ "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. Anda dapat menggunakan salah satu metode berikut:
-
Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat menggunakan dan bereksperimen dengan Terraform secara online setelah login, tanpa perlu menginstalnya. Metode gratis ini ideal untuk mencoba dan men-debug Terraform secara cepat.
-
Use Terraform to quickly create resources: Terraform telah dipra-instal di Alibaba Cloud Cloud Shell dan dikonfigurasi dengan kredensial identitas Anda. Anda dapat langsung menjalankan perintah Terraform di Cloud Shell. Metode ini menawarkan akses cepat, nyaman, dan berbiaya rendah ke Terraform.
-
Install and configure Terraform locally: Metode ini cocok untuk skenario dengan konektivitas jaringan yang buruk atau ketika Anda memerlukan lingkungan pengembangan kustom.
-
Sumber daya yang digunakan
-
alicloud_ess_scaling_group: Membuat grup penskalaan.
-
alicloud_ess_scaling_configuration: Membuat konfigurasi penskalaan.
-
alicloud_ess_scaling_rule: Membuat aturan penskalaan.
-
alicloud_vpc: Membuat VPC.
-
alicloud_vswitch: Membuat vSwitch.
-
alicloud_security_group: Membuat security group.
-
alicloud_security_group_rule: Membuat aturan security group.
Buat sumber daya Auto Scaling
Pada contoh ini, Anda akan membuat sumber daya Auto Scaling, termasuk grup penskalaan, konfigurasi penskalaan, dan aturan penskalaan.
-
Buat direktori kerja, buat file konfigurasi bernama main.tf, lalu salin kode berikut ke dalam 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 } # Create a VPC. resource "alicloud_vpc" "vpc" { vpc_name = "tf-test-vpc-wjt" cidr_block = "172.16.0.0/12" # Specify the private CIDR block for the VPC. } # Create a vSwitch. resource "alicloud_vswitch" "vsw" { vpc_id = alicloud_vpc.vpc.id cidr_block = "172.16.0.0/21" # Specify the private CIDR block for the vSwitch. zone_id = var.zone_id # Select the zone for the vSwitch. vswitch_name = "tf-test-vswitch-wjt" } # Create a security group. resource "alicloud_security_group" "security" { name = "tf_test_security" description = "New security group" vpc_id = alicloud_vpc.vpc.id } # Add a security group rule that allows traffic from all IP addresses. 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" } # This example creates a scaling group with a maximum of 100 instances. resource "alicloud_ess_scaling_group" "group" { scaling_group_name = "tf_test_scalinggroup" min_size = 0 max_size = 100 vswitch_ids = [alicloud_vswitch.vsw.id] } # This example creates a scaling configuration for ECS instances. 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 } # Create a scaling rule. resource "alicloud_ess_scaling_rule" "rule" { scaling_group_id = alicloud_ess_scaling_group.group.id adjustment_type = "QuantityChangeInCapacity" adjustment_value = 1 } -
Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform.
terraform initOutput berikut menunjukkan bahwa inisialisasi berhasil.
Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.90.1... ... 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. -
Buat rencana eksekusi dan pratinjau perubahan.
terraform plan -
Jalankan perintah berikut untuk membuat sumber daya.
terraform applySaat diminta, ketik
yesdan tekan Enter. Tunggu hingga perintah selesai. Output berikut menunjukkan bahwa sumber daya Auto Scaling telah dibuat.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_security_group_rule.allow_all_tcp: Creation complete after 0s [id=sg-f8z1mes******:ingress:tcp:1/65535:intranet:0.0.0.0/0:accept:1] alicloud_vswitch.vsw: Creation complete after 3s [id=vsw-f8ztgc4******] alicloud_ess_scaling_group.group: Creating... alicloud_ess_scaling_group.group: Creation complete after 2s [id=asg-f8z9mo******] ... Apply complete! Resources: 7 added, 0 changed, 0 destroyed. -
Verifikasi hasil
Terraform show
Jalankan perintah berikut untuk melihat detail sumber daya yang dibuat oleh Terraform:
terraform showD:\tf>terraform show # alicloud_ess_scaling_configuration.configuration: resource "alicloud_ess_scaling_configuration" "configuration" { active = true credit_specification = null force_delete = true host_name = null id = "xxx" image_id = "aliyun_2_1903_x64_20G_alibase_20210120.vhd" image_name = null instance_name = "ESS-Instance" instance_type = "ecs.hfc7.xlarge" internet_charge_type = "PayByBandwidth" internet_max_bandwidth_in = 0 internet_max_bandwidth_out = 0 key_name = null override = false password_inherit = false resource_group_id = null role_name = null scaling_configuration_name = "tf_test_scalingconfiguration" scaling_group_id = "xxx" security_group_id = "xxx" spot_strategy = "SpotWithPriceLimit" ... system_disk_auto_snapshot_policy_id = null system_disk_category = "cloud_essd" system_disk_description = null system_disk_encrypted = false system_disk_name = null system_disk_performance_level = null system_disk_size = 0 } # alicloud_ess_scaling_group.group: resource "alicloud_ess_scaling_group" "group" { allocation_strategy = null az_balance = false default_cooldown = 300 desired_capacity = 0 group_deletion_protection = false group_type = "ECS" health_check_type = "ECS" id = "asg-xxx" launch_template_id = null launch_template_version = null max_size = 100 min_size = 0 multi_az_policy = "PRIORITY" on_demand_base_capacity = 0 on_demand_percentage_above_base_capacity = 0 removal_policies = [ "OldestScalingConfiguration", "OldestInstance", ] resource_group_id = "xxx" scaling_group_name = "tf_test_scalinggroup" scaling_policy = "release" spot_allocation_strategy = null spot_instance_remedy = false vswitch_ids = [ "vsw-f8ztgc4ad3e7ft9evy38z", ] }Konsol Auto Scaling
Login ke Auto Scaling console untuk melihat grup penskalaan yang telah Anda buat.
Pada bilah navigasi atas, pilih China (Heyuan) dari pemilih wilayah. Pada halaman Scaling Groups, temukan grup penskalaan bernama tf_test_scalinggroup dan pastikan statusnya Disabled, jenisnya ECS, serta jumlah maksimum instansnya 100.
Bersihkan sumber daya
Saat Anda tidak lagi memerlukan sumber daya yang dibuat dan dikelola oleh Terraform, jalankan perintah berikut untuk menghapusnya. Untuk informasi selengkapnya tentang terraform destroy, lihat Common commands.
terraform destroy
Kode contoh
Anda dapat menjalankan kode contoh dalam topik ini hanya dengan satu klik. Run Sample Code