Este tópico descreve como usar o Terraform para criar seus primeiros recursos do Auto Scaling, como grupos de dimensionamento, configurações de dimensionamento e regras de dimensionamento.
Execute o código de exemplo deste tópico com um único clique em. Executar código de exemplo
Pré-requisitos
-
Uma conta Alibaba Cloud tem permissões totais sobre todos os recursos, o que gera risco significativo de segurança se as credenciais forem comprometidas. Recomendamos usar um usuário RAM e criar um AccessKey para ele. Para mais informações, consulte Create a RAM user e Create an AccessKey.
-
A autorização RAM ajuda a gerenciar permissões de acesso aos recursos na cloud. Ela permite colaboração entre múltiplos usuários e concede apenas as permissões mínimas necessárias, evitando vulnerabilidades de segurança por privilégios excessivos. Para mais informações, consulte 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": "*" } ] } -
Configure um ambiente de execução do Terraform. Use um dos métodos a seguir:
Use o Terraform no Terraform Explorer: a Alibaba Cloud oferece um ambiente de execução online para o Terraform. Após fazer login, use e teste o Terraform diretamente no navegador, sem necessidade de instalação. Essa opção gratuita é ideal para testes rápidos e depuração.
Use Terraform to quickly create resources: o Terraform vem pré-instalado no Cloud Shell da Alibaba Cloud e configurado com suas credenciais de identidade. Execute comandos do Terraform diretamente no Cloud Shell. Esse método oferece acesso rápido, prático e de baixo custo ao Terraform.
Install and configure Terraform locally: método recomendado para cenários com conectividade de rede limitada ou quando for necessário um ambiente de desenvolvimento personalizado.
Recursos utilizados
alicloud_ess_scaling_group: cria um grupo de dimensionamento.
alicloud_ess_scaling_configuration: cria uma configuração de dimensionamento.
alicloud_ess_scaling_rule: cria uma regra de dimensionamento.
alicloud_vpc: cria uma VPC.
alicloud_vswitch: cria um vSwitch.
alicloud_security_group: cria um grupo de segurança.
alicloud_security_group_rule: cria uma regra de grupo de segurança.
Criar recursos do Auto Scaling
Neste exemplo, você criará recursos do Auto Scaling, incluindo um grupo de dimensionamento, uma configuração de dimensionamento e uma regra de dimensionamento.
-
Crie um diretório de trabalho e um arquivo de configuração chamado main.tf. Em seguida, copie o código abaixo para o arquivo 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 } -
Execute o comando a seguir para inicializar o ambiente de execução do Terraform.
terraform initA saída abaixo indica que a inicialização foi bem-sucedida.
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. -
Crie um plano de execução e visualize as alterações.
terraform plan -
Execute o comando abaixo para criar os recursos.
terraform applyQuando solicitado, insira
yese pressione Enter. Aguarde a conclusão do comando. A saída a seguir confirma a criação dos recursos do Auto Scaling.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. -
Verifique os resultados
Terraform show
Execute o comando a seguir para visualizar os detalhes dos recursos criados pelo 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", ] }Auto Scaling console
Faça login no Auto Scaling console para visualizar o grupo de dimensionamento criado.
Na barra de navegação superior, selecione China (Heyuan) no seletor de regiões. Na página Scaling Groups, localize o grupo de dimensionamento chamado tf_test_scalinggroup e confirme se o status está Disabled, se o tipo é ECS e se o número máximo de instâncias é 100.
Limpar recursos
Quando não precisar mais dos recursos criados e gerenciados pelo Terraform, execute o comando a seguir para destruí-los. Para mais informações sobre terraform destroy, consulte Common commands.
terraform destroy
Código de exemplo
Execute o código de exemplo deste tópico com um único clique em. Executar código de exemplo