Tüm Ürünler
Search
Belge Merkezi

Auto Scaling:Create Auto Scaling resources by using Terraform

Son Güncelleme:Oct 06, 2026

Bu konu, ölçeklendirme grupları, ölçeklendirme yapılandırmaları ve ölçeklendirme kuralları gibi ilk Auto Scaling kaynaklarınızı oluşturmak için Terraform'un nasıl kullanılacağını açıklar.

Not

Bu konudaki örnek kodu tek bir tıklamayla çalıştırabilirsiniz. Örnek Kodu Çalıştır

Önkoşullar

  • Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam yetkilere sahiptir; hesap kimlik bilgilerinin sızması durumunda bu durum önemli bir güvenlik riski oluşturur. Bir RAM kullanıcısı kullanmanızı ve bu kullanıcı için bir AccessKey oluşturmanızı öneririz. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve AccessKey oluşturma.

  • RAM yetkilendirmesi, cloud kaynaklarınıza yönelik erişim izinlerini yönetmenize yardımcı olur. Çoklu kullanıcı işbirliğini destekler ve aşırı ayrıcalıklardan kaynaklanan güvenlik açıklarını önlemek için kullanıcılara yalnızca gerekli minimum izinleri vermenizi sağlar. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme.

    {
        "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": "*"
            }
        ]
    }
  • Bir Terraform çalışma zamanı ortamı kurun. Aşağıdaki yöntemlerden birini kullanabilirsiniz:

    • Terraform Explorer içinde Terraform kullanın: Alibaba Cloud, Terraform için çevrimiçi bir çalışma zamanı ortamı sağlar. Oturum açtıktan sonra Terraform'u kurmanıza gerek kalmadan çevrimiçi olarak kullanabilir ve deneyebilirsiniz. Bu ücretsiz yöntem, Terraform'u hızlıca denemek ve hata ayıklamak için idealdir.

    • Kaynakları hızlıca oluşturmak için Terraform kullanma: Terraform, Alibaba Cloud Cloud Shell'de önceden yüklüdür ve kimlik kimlik bilgilerinizle yapılandırılmıştır. Cloud Shell'de Terraform komutlarını doğrudan çalıştırabilirsiniz. Bu yöntem, Terraform'a hızlı, kullanışlı ve düşük maliyetli erişim sağlar.

    • Terraform'u yerel olarak yükleme ve yapılandırma: Bu yöntem, ağ bağlantısının zayıf olduğu senaryolar veya özel bir geliştirme ortamına ihtiyaç duyduğunuz durumlar için uygundur.

Kullanılan kaynaklar

Auto Scaling kaynakları oluşturma

Bu örnekte, bir ölçeklendirme grubu, bir ölçeklendirme yapılandırması ve bir ölçeklendirme kuralı dahil olmak üzere Auto Scaling kaynakları oluşturacaksınız.

  1. Bir çalışma dizini oluşturun, main.tf adlı bir yapılandırma dosyası oluşturun ve ardından aşağıdaki kodu main.tf dosyasına kopyalayın.

    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
    }
  2. Terraform çalışma zamanı ortamını başlatmak için aşağıdaki komutu çalıştırın.

    terraform init

    Aşağıdaki çıktı, başlatmanın başarılı olduğunu gösterir.

    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.
  3. Bir yürütme planı oluşturun ve değişiklikleri önizleyin.

    terraform plan
  4. Kaynakları oluşturmak için aşağıdaki komutu çalıştırın.

    terraform apply

    İstendiğinde yes yazın ve Enter tuşuna basın. Komutun tamamlanmasını bekleyin. Aşağıdaki çıktı, Auto Scaling kaynaklarının oluşturulduğunu gösterir.

    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.
  5. Sonuçları doğrulayın

    Terraform show

    Terraform tarafından oluşturulan kaynakların ayrıntılarını görüntülemek için aşağıdaki komutu çalıştırın:

    terraform show
    D:\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",
        ]
    }

    Auto Scaling konsolu

    Oluşturduğunuz ölçeklendirme grubunu görüntülemek için Auto Scaling konsolunda oturum açın.

    Üst gezinme çubuğunda bölge seçiciden China (Heyuan) öğesini seçin. Scaling Groups sayfasında, tf_test_scalinggroup adlı ölçeklendirme grubunu bulun ve durumunun Disabled, türünün ECS ve maksimum örnek sayısının 100 olduğunu onaylayın.

Kaynakları temizleme

Terraform tarafından oluşturulan ve yönetilen kaynaklara artık ihtiyaç duymadığınızda, bunları yok etmek için aşağıdaki komutu çalıştırın. terraform destroy hakkında daha fazla bilgi için bkz. Ortak komutlar.

terraform destroy

Örnek kod

Not

Bu konudaki örnek kodu tek bir tıklamayla çalıştırabilirsiniz. Örnek Kodu Çalıştır

Örnek kod

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
}