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.
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
alicloud_ess_scaling_group: Bir ölçeklendirme grubu oluşturur.
alicloud_ess_scaling_configuration: Bir ölçeklendirme yapılandırması oluşturur.
alicloud_ess_scaling_rule: Bir ölçeklendirme kuralı oluşturur.
alicloud_vpc: Bir VPC oluşturur.
alicloud_vswitch: Bir vSwitch oluşturur.
alicloud_security_group: Bir güvenlik grubu oluşturur.
alicloud_security_group_rule: Bir güvenlik grubu kuralı oluşturur.
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.
-
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 } -
Terraform çalışma zamanı ortamını başlatmak için aşağıdaki komutu çalıştırın.
terraform initAş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. -
Bir yürütme planı oluşturun ve değişiklikleri önizleyin.
terraform plan -
Kaynakları oluşturmak için aşağıdaki komutu çalıştırın.
terraform applyİstendiğinde
yesyazı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. -
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 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", ] }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
Bu konudaki örnek kodu tek bir tıklamayla çalıştırabilirsiniz. Örnek Kodu Çalıştır