O Terraform é uma ferramenta de código aberto para infraestrutura como código (IaC) que gerencia todo o ciclo de vida dos recursos da Alibaba Cloud por meio de arquivos de configuração declarativos. Use uma interface visual ou a linha de comando para criar seu primeiro recurso na Alibaba Cloud.
Escolha um método
O Terraform oferece duas abordagens: visual e linha de comando. Escolha a que melhor atende às suas necessidades.
|
Método |
Cenários |
Vantagens |
Limitações |
|
Primeiro uso, desconhecimento dos parâmetros, depuração rápida |
Configure recursos usando um formulário gráfico. Não requer codificação. |
Suporta apenas operações de recurso único. |
|
|
Avaliação rápida, ambientes de produção, orquestração complexa |
Suporta orquestração de múltiplos recursos e gerenciamento de estado. |
Requer um ambiente de CLI. |
Se optar pelo método CLI, prepare seu ambiente usando o Cloud Shell ou a instalação local.
Use o Terraform Explorer
O Terraform Explorer é a ferramenta de depuração online da Alibaba Cloud que gera arquivos de configuração do Terraform a partir de formulários e os executa na nuvem. Para mais informações, consulte Visão geral do Explorer.
O exemplo a seguir cria uma Virtual Private Cloud (VPC) para demonstrar duas formas de usar o Terraform Explorer: parâmetros personalizados e modelos de exemplo.
Crie recursos usando parâmetros personalizados
Para configurar os parâmetros conforme suas necessidades, siga estas etapas:
-
Faça login no Terraform Explorer. Selecione um Product e um Resource Type. Preencha os parâmetros usando a Resource Documentation e clique em Initiate.
Os principais parâmetros para criar uma VPC estão listados abaixo. Para mais detalhes sobre os parâmetros, consulte alicloud_vpc.
Nome do parâmetro
Descrição
Valor de exemplo
vpc_name
Nome da VPC
tf-test-vpc
cidr_block
Bloco CIDR privado para a VPC
192.168.0.0/16
description
Descrição da VPC
The VPC was created using Terraform.
-
Na aba Template Details, confirme se os parâmetros estão corretos e clique em Plan para visualizar o plano de execução.
terraform { required_providers { alicloud = { source = "aliyun/alicloud" version = "1.231.0" } } } provider "alicloud" { region = "cn-beijing" } resource "alicloud_vpc" "default" { cidr_block = "192.168.0.0/16" description = "The VPC was created using Terraform." vpc_name = "tf-test-vpc" } -
Na aba Details, revise as informações sobre os recursos a serem criados e clique em Execute.
O resultado da pré-visualização mostra um status Success e a mensagem
Plan: 1 to add, 0 to change, 0 to destroy, indicando que o recursoalicloud_vpc.defaultserá criado. Ocidr_blocké192.168.0.0/16e adescriptionéThe VPC was created using Terraform.. O Terraform gera outros atributos após a execução. Na aba Execution Details, visualize o resultado. Uma execução bem-sucedida exibe a mensagem "
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.". Se a execução falhar, modifique os parâmetros com base na mensagem de erro e tente novamente.-
Na aba Resource Details, visualize as informações sobre o recurso criado.
O endereço do recurso é
alicloud_vpc.default. A página exibe vários atributos da VPC, incluindo:cidr_block:
192.168.0.0/16name:
tf-test-vpcdescription:
The VPC was created using Terraform.create_time: Horário de criação da VPC.
Configurações de rede, como classic_link_enabled e enable_ipv6.
Informações de recursos associados, como resource_group_id, route_table_id e router_id.
(Opcional) Modifique o recurso: ajuste os parâmetros, clique em Plan & Apply e repita as etapas 2 a 4. Uma atualização bem-sucedida exibe a mensagem "
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.".-
(Opcional) Destrua o recurso: na aba Execution Details, clique em Destroy Resources. Em seguida, na aba Details, clique em Execute.
Ao concluir a operação, a aba Execution Details mostrará um status Success com a mensagem
Apply complete! Resources: 0 added, 0 changed, 1 destroyed, confirmando a destruição do recurso VPC.
Crie recursos usando um modelo de exemplo
Caso não esteja familiarizado com os parâmetros de recursos ou queira começar rapidamente, use um modelo de exemplo do Terraform Explorer.
-
Faça login no Terraform Explorer. Selecione o Product, o Resource Type e o Sample Template correspondentes e clique em Initiate. Visualize os detalhes do modelo na aba Sample Template à direita.
Na área Input Parameters à esquerda, visualize e modifique os parâmetros exigidos pelo modelo. Por exemplo, defina o parâmetro name como
terraform-example. Clique em Add Parameter para adicionar mais parâmetros. -
Na aba Template Details, clique em Plan & Apply.
Este modelo de exemplo está no formato Terraform. Ele define um recurso
alicloud_vpccom parâmetros comoipv6_ispdefinido como BGP,cidr_blockdefinido como10.0.0.0/8eenable_ipv6definido como true. Na aba Execution Details, visualize o resultado da execução.
(Opcional) Para destruir o recurso criado, clique em Destroy Resources na aba Execution Details. Depois, na aba Details, clique em Execute.
Também é possível executar operações como Continue e Destroy Resources a partir do Call History.
Use o Terraform CLI
Para usar o Terraform via linha de comando, prepare um ambiente de CLI, escreva um arquivo de configuração e execute comandos para criar recursos. Escolha um dos métodos abaixo para configurar seu ambiente:
Cloud Shell (recomendado): Nenhuma instalação necessária. Ideal para avaliação rápida e aprendizado.
Instalação local: Mais indicado para ambientes de produção, integração contínua e uso a longo prazo.
Cloud Shell
O Alibaba Cloud Cloud Shell é uma ferramenta operacional gratuita pré-instalada com o Terraform e pré-configurada com credenciais de identidade, permitindo a execução imediata de comandos do Terraform.
Faça login no Cloud Shell
Abra seu navegador e acesse o Cloud Shell. Para mais informações, consulte Usar o Cloud Shell.
Faça login como um usuário RAM. Para proteger sua conta Alibaba Cloud, evite usá-la para acessar recursos da nuvem, a menos que seja necessário.
Alterne versões do Terraform
A versão padrão do Terraform no Cloud Shell pode estar desatualizada. Alterne para a versão 1,2 ou posterior para garantir que todos os recursos funcionem corretamente.
-
Verifique sua versão atual do Terraform:
terraform versionshell@Alicloud:~$ terraform version Terraform v0.12.31 Your version of Terraform is out of date! The latest version is 1.12.2. You can update by downloading from https://www.terraform.io/downloads.html -
Liste as versões disponíveis do Terraform no Cloud Shell:
tfenv listshell@Alicloud:~$ tfenv list 1.9.5 1.5.7 1.3.7 0.13.7 * 0.12.31 (set by /usr/local/tfenv/version) -
Alterne para uma versão específica (por exemplo, 1.9.5):
tfenv use 1.9.5shell@Alicloud:~$ tfenv use 1.9.5 Switching default version to v1.9.5 Switching completed
Instalação local
Recomendada para ambientes de produção e orquestrações complexas. Instale o Terraform e configure as credenciais de identidade antes de prosseguir.
Instalar usando um gerenciador de pacotes (recomendado)
macOS
Instale usando o Homebrew:
# Add HashiCorp's tap to define where packages are located in Homebrew
brew tap hashicorp/tap
# Install Terraform
brew install hashicorp/tap/terraform
Atualize para a versão mais recente:
# Update Homebrew
brew update
# Upgrade Terraform
brew upgrade hashicorp/tap/terraform
Windows
Instale usando o Chocolatey:
choco install terraform
Linux
Por exemplo, usando o gerenciador de pacotes yum:
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform
Instalação manual
Se um gerenciador de pacotes não estiver disponível, instale o Terraform manualmente.
Usar um binário pré-compilado
Baixe o arquivo ZIP para seu sistema operacional no site do Terraform e extraia o arquivo compactado.
-
Mova o arquivo binário
terraformpara um diretório noPATHdo seu sistema:-
macOS ou Linux
mv ~/Downloads/terraform /usr/local/bin/ -
Windows
Abra Painel de Controle > Sistema > Configurações do Sistema > Variáveis de Ambiente.
Em Variáveis do Sistema, localize PATH e clique em Editar.
Adicione o caminho para o seu diretório do Terraform. Separe-o de outras entradas com um ponto e vírgula (por exemplo,
c:\path;c:\path2).Abra uma nova janela de linha de comando para que a alteração tenha efeito.
-
Compilar a partir do código-fonte
Primeiro, instale o ambiente de desenvolvimento Go.
-
Clone o repositório de código-fonte do Terraform:
git clone https://github.com/hashicorp/terraform.git -
Navegue até o diretório, compile e instale o software.
cd terraform go installApós a compilação, o binário é colocado no diretório
$GOPATH/bin/. Certifique-se de que
$GOPATH/binesteja adicionado ao PATH do seu sistema. Use as mesmas etapas descritas em Usar um binário pré-compilado, etapa 2.
Verifique a instalação
Execute o seguinte comando para verificar se o Terraform foi instalado corretamente:
terraform version
Se o número da versão for exibido, a instalação estará concluída.
Exemplo: Criar uma instância ECS
Este exemplo percorre todo o fluxo de trabalho do Terraform criando uma instância ECS: VPC → vSwitch → grupo de segurança → instância ECS.
-
Crie um diretório de trabalho e escreva o arquivo de configuração do Terraform
main.tf:mkdir tf-demo && cd tf-demo vim main.tfCopie o código a seguir para
main.tf:provider "alicloud" { region = var.region } # Region for resource creation variable "region" { default = "cn-beijing" } # ECS instance name variable "instance_name" { default = "tf-cloudshell-test" } # ECS instance type variable "instance_type" { default = "ecs.n2.small" } # Outbound public bandwidth. A value of 0 means no public network access. variable "internet_bandwidth" { default = 10 } # ECS OS image variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } # ECS system disk type variable "disk_category" { default = "cloud_efficiency" } # ECS instance logon password variable "password" { default = "TF-test@1234" } # Create a VPC resource "alicloud_vpc" "vpc" { vpc_name = "tf_test_foo" cidr_block = "172.16.0.0/12" } # Query for availability zones based on the instance type and disk category data "alicloud_zones" "default" { available_disk_category = var.disk_category available_resource_creation = "VSwitch" available_instance_type = var.instance_type } # Create a vSwitch resource "alicloud_vswitch" "vsw" { vpc_id = alicloud_vpc.vpc.id cidr_block = "172.16.0.0/21" zone_id = data.alicloud_zones.default.zones.0.id } # Create a security group resource "alicloud_security_group" "default" { security_group_name = "default" vpc_id = alicloud_vpc.vpc.id } # Create an inbound security group rule 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.default.id cidr_ip = "0.0.0.0/0" } resource "alicloud_instance" "instance" { # Attach the security group security_groups = alicloud_security_group.default.*.id instance_type = var.instance_type system_disk_category = var.disk_category image_id = var.image_id instance_name = var.instance_name # Specify the vSwitch vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_bandwidth password = var.password }ImportanteA regra do grupo de segurança neste exemplo abre todas as portas TCP (1-65535) e permite tráfego de qualquer endereço IP (0.0.0.0/0). Use esta configuração apenas em ambientes de teste. Em produção, restrinja as portas e os endereços IP de origem conforme necessário.
-
Inicialize o diretório de trabalho do Terraform:
terraform init -
Visualize o plano de execução para confirmar quais recursos serão criados:
terraform planshell@Alicloud:~/tf-demo$ terraform plan data.alicloud_zones.default: Reading... data.alicloud_zones.default: Read complete after 1s [id=1373912221] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # alicloud_instance.instance will be created + resource "alicloud_instance" "instance" { + availability_zone = (known after apply) + cpu = (known after apply) + create_time = (known after apply) + credit_specification = (known after apply) + deployment_set_group_no = (known after apply) + description = (known after apply) + dry_run = false + enable_jumbo_frame = (known after apply) + expired_time = (known after apply) + host_name = (known after apply) + http_endpoint = (known after apply) + http_put_response_hop_limit = (known after apply) + http_tokens = (known after apply) + id = (known after apply) + image_id = "ubuntu_18_04_64_20G_alibase_20190624.vhd" + instance_charge_type = (known after apply) + instance_name = "tf-cloudshell-test" + instance_type = "ecs.n2.small" + internet_charge_type = (known after apply) + internet_max_bandwidth_in = (known after apply) + internet_max_bandwidth_out = 10 + io_optimized = (known after apply) + ipv6_address_count = (known after apply) + ipv6_addresses = (known after apply) + key_name = (known after apply) + maintenance_action = (known after apply) + memory = (known after apply) + network_interface_id = (known after apply) + network_interface_traffic_mode = (known after apply) + os_name = (known after apply) + os_type = (known after apply) + password = (sensitive value) + period = (known after apply) + primary_ip_address = (known after apply) -
Crie os recursos. A saída "
Apply complete!" indica sucesso:terraform applyApply complete! Resources: 5 added, 0 changed, 0 destroyed. -
Para liberar esses recursos, execute:
terraform destroy