O Terraform é uma ferramenta de código aberto de infraestrutura como código (IaC) que permite aos desenvolvedores definir e gerenciar configurações de infraestrutura por meio de uma linguagem declarativa. Ele oferece um método simples para criar, modificar ou excluir recursos do Elastic Compute Service (ECS). O uso do Terraform reduz a complexidade e os erros associados a operações manuais, melhorando a gerenciabilidade e a manutenção da infraestrutura. Este tópico descreve como instalar e configurar o Terraform, além de utilizá-lo para criar uma instância ECS.
Recursos básicos do Terraform
O Terraform suporta a orquestração automatizada da infraestrutura de TI, permitindo o gerenciamento e a manutenção de recursos por meio de código. Para mais informações, consulte O que é o Alibaba Cloud Terraform?.
A ferramenta disponibiliza uma CLI intuitiva para implantar arquivos de configuração na Alibaba Cloud ou em nuvens de terceiros, além de gerenciar o versionamento desses arquivos. Nos arquivos de configuração, defina os recursos de infraestrutura necessários para construir topologias de nuvem, incluindo máquinas virtuais (VMs), contas de armazenamento e interfaces de rede.
A integração com o provedor da Alibaba Cloud permite suportar novas infraestruturas. Utilize um modelo para configurar o provedor da Alibaba Cloud, definindo, visualizando e implantando a infraestrutura na nuvem.
Crie, modifique e exclua recursos de diversos serviços da Alibaba Cloud utilizando o Terraform.
Para obter detalhes sobre a integração dos serviços da Alibaba Cloud com o Terraform, consulte Provedor da Alibaba Cloud.
Instalar o Terraform
Usar o Cloud Shell
O Cloud Shell na Alibaba Cloud é um serviço gratuito de O&M que já inclui o Terraform. Execute comandos do Terraform diretamente no Cloud Shell.
Certifique-se de ter uma conta válida na Alibaba Cloud com as permissões adequadas.
Abra um navegador e insira https://shell.alibabacloud.com/ na barra de endereços para acessar o Cloud Shell.
Após fazer login no Cloud Shell, execute o seguinte comando:
terraform
A saída do comando mostrada na figura a seguir indica que o Terraform está disponível no Cloud Shell e pronto para uso imediato.

Para mais informações sobre como utilizar o Cloud Shell, consulte Usar o Cloud Shell.
Instalação manual
Usar um pacote pré-compilado
Acesse o site oficial do Terraform, localize o pacote ZIP correspondente ao seu sistema operacional e baixe-o.
Descompacte o pacote baixado no diretório /usr/local/bin. Após a descompactação, exclua o arquivo baixado sem afetar o funcionamento do Terraform.
Verifique se o diretório do Terraform está definido na variável de ambiente PATH. O valor dessa variável varia conforme o sistema operacional.
Windows
Navegue até Painel de Controle > Sistema > Configurações do sistema > Variáveis de Ambiente.
Role para baixo nas variáveis do sistema até localizar PATH.
Clique em Editar e modifique o valor da variável de ambiente PATH.
Separe os diretórios com ponto e vírgula (;). Exemplo: c:\path;c:\path2.
Reinicie sua ferramenta de linha de comando para que as alterações tenham efeito.
Para mais detalhes, consulte Onde posso definir o caminho para make.exe no Windows?.
macOS ou Linux
Exiba o valor da variável de ambiente PATH.
echo $PATH
Mova o arquivo binário do Terraform para um dos diretórios listados no valor da variável de ambiente PATH. Especifique os diretórios de origem e destino no comando mv. Por exemplo, se o binário do Terraform estiver na pasta Downloads e o valor da variável de ambiente PATH incluir o diretório /usr/local/bin, execute o seguinte comando:
mv ~/Downloads/terraform /usr/local/bin/
Para mais informações, veja os tópicos a seguir:
Usar o código-fonte
Caso prefira compilar o binário a partir do código-fonte, execute o comando abaixo para clonar o repositório HashiCorp Terraform:
git clone https://github.com/hashicorp/terraform.git
A saída do comando na figura a seguir mostra o progresso da clonagem. Aguarde a conclusão do processo.

Após a clonagem do repositório, um diretório chamado terraform será criado no local onde você executou o comando de instalação. Execute o comando cd para entrar no diretório /terraform.
cd terraform
Execute o comando de instalação para compilar o diretório e mover o pacote compilado para o diretório $GOPATH/bin/terraform.
go install
A saída mostrada na figura a seguir indica que a compilação está em andamento. Aguarde o término antes de prosseguir.

Se a mensagem de erro "zsh: command not found: go" aparecer, será necessário instalar o ambiente Go previamente.
Garanta que o diretório do Terraform esteja definido e acessível na variável de ambiente PATH. O valor dessa variável depende do seu sistema operacional.
macOS ou Linux
Exiba o valor da variável de ambiente PATH.
echo $PATH
Transfira o arquivo binário do Terraform para um dos diretórios presentes no valor da variável de ambiente PATH. No comando mv, especifique a origem e o destino. Por exemplo, se o binário estiver na pasta Downloads e a variável PATH contiver /usr/local/bin, utilize o comando:
mv ~/Downloads/terraform /usr/local/bin/
Para mais informações, consulte os tópicos abaixo:
Windows
Navegue até Painel de Controle > Sistema > Configurações do sistema > Variáveis de Ambiente.
Localize a variável PATH rolando para baixo nas variáveis do sistema.
Clique em Editar para alterar o valor da variável de ambiente PATH.
Utilize ponto e vírgula (;) para separar os diretórios. Exemplo: c:\path;c:\path2.
Reinicie a ferramenta de linha de comando para aplicar as configurações.
Para mais detalhes, veja Onde posso definir o caminho para make.exe no Windows?.
macOS Homebrew
O Homebrew é amplamente utilizado para instalar pacotes no macOS. Com poucos comandos, instale o Terraform através dele.
Passo 1: Instale o tap da HashiCorp, que contém todos os pacotes Homebrew da empresa.
brew tap hashicorp/tap
Passo 2: Execute o comando abaixo para instalar o Terraform:
brew install hashicorp/tap/terraform
Este comando instala a versão mais recente do Terraform. Se houver uma atualização disponível após a instalação, utilize o comando upgrade para atualizá-lo.
Antes de atualizar o Terraform, execute o comando a seguir para atualizar o Homebrew:
brew update
Em seguida, execute o comando abaixo para obter a versão mais recente do Terraform:
brew upgrade hashicorp/tap/terraform
Linux
Alibaba Cloud Liunx
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform


Windows Chocolatey
O Chocolatey é uma ferramenta comum para instalação de pacotes no Windows. Utilize o Chocolatey para instalar o Terraform com poucos comandos.
choco install terraform
Autenticar o Terraform
Armazene as credenciais de acesso em variáveis de ambiente específicas para autenticar o Terraform. Ao executar um comando, caso nenhuma credencial seja declarada explicitamente no modelo de configuração, o Terraform as obterá dessas variáveis. Configure-as de acordo com seu sistema operacional.
Windows
Na área de trabalho do Windows, clique com o botão direito em Este Computador e selecione Properties. Na página exibida, clique em Advanced system settings. Na caixa de diálogo System Properties, clique em Environment Variables na guia Advanced. A caixa de diálogo Environment Variables será aberta, contendo as seções User variables e System variables.
-
Na seção System variables ou User variables, clique em New. Na caixa de diálogo exibida, crie as variáveis de ambiente descritas na tabela a seguir.
Variável
Descrição
Valor
ALICLOUD_ACCESS_KEY
O AccessKey ID.
yourAccessKeyID
ALICLOUD_SECRET_KEY
O segredo do AccessKey.
yourAccessKeySecret
ALICLOUD_SECURITY_TOKEN
Opcional. Necessário apenas se você utilizar um token do Security Token Service (STS).
yourSTSToken
Linux
As variáveis de ambiente temporárias configuradas com o comando export são válidas somente durante a sessão atual. Ao sair da sessão, elas deixam de funcionar. Para torná-las permanentes, adicione o comando export ao arquivo de inicialização do seu sistema operacional.
# Access Key Id
$ export ALICLOUD_ACCESS_KEY="yourAccessKeyID"
# Access Key Secret
$ export ALICLOUD_SECRET_KEY="yourAccessKeySecret"
# If you use an STS token, set the ALICLOUD_SECURITY_TOKEN environment variable to the STS token.
$ export ALICLOUD_SECURITY_TOKEN="yourSTStoken"
Após configurar as variáveis de ambiente, não é necessário declarar as credenciais de acesso explicitamente; alternativamente, declare apenas o ID da região no bloco de código do provedor no modelo de configuração.
provider "alicloud" {
region = "cn-hangzhou"
}
Também é possível especificar o ID da região usando a variável de ambiente ALICLOUD_REGION. Caso nenhum ID de região seja declarado e a variável ALICLOUD_REGION não esteja configurada, cn-beijing será usado como valor padrão para o parâmetro de região.
Recursos suportados
Cada recurso representa um novo componente de infraestrutura, como uma instância ECS, uma máquina virtual (VM) ou um grupo de segurança.
Usar o Terraform para criar e gerenciar recursos ECS
Esta seção explica como criar uma instância ECS utilizando o Terraform.
-
Crie um diretório de trabalho e, dentro dele, um arquivo de configuração chamado main.tf. O código abaixo cria uma instância ECS juntamente com a Virtual Private Cloud (VPC), o grupo de segurança e o vSwitch necessários. Copie este conteúdo para o arquivo main.tf:
# Define a variable named region to represent an Alibaba Cloud region. The default value of this variable is cn-beijing. variable "region"{ default = "cn-beijing" } # Configure the Alibaba Cloud provider and specify the region defined in the region variable. provider "alicloud"{ region = var.region } # Define a string variable named instance_type to represent an ECS instance type. The default value of this variable is ecs.e-c1m1.large. variable "instance_type" { type = string default = "ecs.e-c1m1.large" } # Use a data source and configure the specified instance type, resource type (such as vSwitch), and disk category as filters to query zones in which you can create ECS instances. data "alicloud_zones" "default" { available_instance_type = var.instance_type available_resource_creation = "VSwitch" available_disk_category = "cloud_essd" } # Define a variable named vpc_cidr_block to represent the CIDR block that you want to associate with a VPC. The default value of this variable is 172.16.0.0/16. variable "vpc_cidr_block" { default = "172.16.0.0/16" } # Define a variable named vsw_cidr_block to represent the CIDR block that you want to associate with a vSwitch. The default value of this variable is 172.16.0.0/24. variable "vsw_cidr_block" { default = "172.16.0.0/24" } # Generate a random integer from 10000 to 99999 to ensure the uniqueness of certain resource names. resource "random_integer" "default" { min = 10000 max = 99999 } # Create a VPC named vpc-test and use a random integer to ensure the uniqueness of the name. resource "alicloud_vpc" "vpc" { vpc_name = "vpc-test_${random_integer.default.result}" cidr_block = var.vpc_cidr_block } # Create a security group in the created VPC and use a random integer to ensure the uniqueness of the security group name. resource "alicloud_security_group" "group" { security_group_name = "test_${random_integer.default.result}" # Replace test_$ with an actual value. vpc_id = alicloud_vpc.vpc.id } # Create an inbound security group rule that allows all TCP traffic in the created security group. resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" # Set the nic_type parameter to 'intranet'. policy = "accept" port_range = "1/65535" priority = 1 security_group_id = alicloud_security_group.group.id cidr_ip = "0.0.0.0/0" } # Create a vSwitch in the specified zone and the created VPC and use a random integer to ensure the uniqueness of the vSwitch name. resource "alicloud_vswitch" "vswitch" { vpc_id = alicloud_vpc.vpc.id cidr_block = var.vsw_cidr_block zone_id = data.alicloud_zones.default.zones[0].id vswitch_name = "vswitch-test-${random_integer.default.result}" } # Specify multiple parameters, including the zone, security group, and instance type, to create an ECS instance and use a random integer to ensure the uniqueness of the instance name. resource "alicloud_instance" "instance" { availability_zone = data.alicloud_zones.default.zones[0].id security_groups = [alicloud_security_group.group.id] instance_type = var.instance_type system_disk_category = "cloud_essd" system_disk_name = "test_foo_system_disk_${random_integer.default.result}" system_disk_description = "test_foo_system_disk_description" image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd" instance_name = "test_ecs_${random_integer.default.result}" vswitch_id = alicloud_vswitch.vswitch.id internet_max_bandwidth_out = 10 password = "Terraform@Example" # Configure a password for the ECS instance. Replace Terraform@Example with an actual value. } -
Execute o comando abaixo para inicializar o ambiente de execução do Terraform:
terraform initA seguinte saída confirma que o Terraform foi inicializado com sucesso:
Terraform has been successfully initialized! 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. -
Execute o comando a seguir para rodar o código:
terraform applyDurante a execução, digite
yesquando solicitado e pressione a tecla Enter. Aguarde a finalização do processo. A saída abaixo indica que o código foi executado corretamente:You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure. 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 Apply complete! Resources: 6 added, 0 changed, 0 destroyed. Verifique os resultados.
Executar o comando terraform show
No diretório de trabalho, execute o comando abaixo para consultar os detalhes dos recursos criados pelo Terraform:
terraform show

Fazer login no console ECS
Acesse o console ECS. No painel de navegação à esquerda, escolha . Na barra de navegação superior, selecione a região onde a instância ECS foi criada. Neste exemplo, escolha China (Beijing) para visualizar a instância criada.

Referências
Para conhecer casos de uso do Terraform, consulte Melhores Práticas.
Para uma lista de comandos comuns do Terraform, veja Comandos comuns.
O Terraform também está disponível como serviço gerenciado no ROS. Implante modelos do Terraform diretamente pelo console ROS. Para mais detalhes, consulte Criar uma pilha Terraform.