O Terraform é uma ferramenta cliente para gerenciar recursos de TI. Use comandos do Terraform para gerenciar todos os seus recursos. Este tópico descreve comandos comuns para gerenciamento de recursos e de estado.
Comandos comuns para gerenciamento de recursos
O gerenciamento de recursos no Terraform envolve principalmente o ciclo de vida dos recursos. Use comandos para criar, modificar, visualizar e excluir os recursos definidos em seus modelos do Terraform.
-
terraform plan: Visualizar recursos previamente
O comando
planvisualiza previamente os recursos definidos em um modelo. Utilize-o nos seguintes cenários:Visualize previamente os recursos definidos no modelo atual para verificar se correspondem às suas expectativas. Essa ação é semelhante ao recurso de visualização em Markdown.
Caso já exista um arquivo de estado para o modelo atual, o comando
planexibe as diferenças entre a definição do modelo e o conteúdo do arquivo de estado. Se houver alterações, a saída do comando mostrará os resultados.Para um DataSource, execute o comando
planpara recuperar e exibir o recurso que você deseja consultar e suas propriedades.
-
terraform apply: Criar e alterar recursos
O comando
applycria ou altera recursos reais. Por segurança, esse comando inclui uma etapa interativa que exige confirmação manual da operação. Também é possível usar o parâmetro --auto-approve para pular essa confirmação.Use o comando
applynas seguintes situações:Criar novos recursos.
Alterar propriedades de recursos modificando parâmetros do modelo.
Se você remover uma definição de recurso do modelo atual, o comando
applyexcluirá o recurso. A remoção de um recurso também é considerada uma alteração.
-
terraform show: Exibir recursos
O comando
showexibe todos os recursos gerenciados no estado atual e seus respectivos valores de propriedade. -
terraform destroy: Liberar recursos
O comando
destroylibera recursos. Por segurança, ele inclui uma etapa interativa que exige confirmação manual da operação. Use o parâmetro --force para pular a confirmação manual.Por padrão,
terraform destroylibera todos os recursos definidos no modelo atual. Para liberar apenas um recurso específico, especifique-o usando o parâmetro-target=<resource_type>.<resource_name>. -
terraform import: Importar recursos
O comando
importimporta recursos de cloud existentes para o estado do Terraform, permitindo gerenciá-los com essa ferramenta. Use este comando em cenários que incluem, mas não se limitam a:Você possui recursos de cloud existentes criados e gerenciados por meio do console, Alibaba Cloud Command-Line Interface (CLI), Resource Orchestration Service (ROS) ou chamadas diretas de API, e agora deseja gerenciá-los usando o Terraform.
É necessário refatorar definições de recursos no modelo sem afetar a operação deles.
Um provedor da Alibaba Cloud foi atualizado para uma nova versão. A nova versão do provedor suporta mais parâmetros para recursos definidos no modelo original, e você precisa sincronizar os parâmetros mais recentes.
NotaPara obter mais informações sobre como gerenciar recursos existentes usando o comando
import, consulte How to manage existing cloud resources. -
terraform taint: Marcar um recurso como tainted
O comando
taintmarca um recurso como tainted. Na próxima execução do comandoapply, o recurso marcado será primeiro liberado e depois recriado. Isso equivale a excluir e recriar aquele recurso específico.O formato do comando é:
terraform taint <resource_type>.<resource_name>. Por exemplo:$ terraform taint alicloud_vswitch.this Resource instance alicloud_vswitch.this has been marked as tainted. -
terraform untaint: Desmarcar um recurso como tainted
O comando untaint é o inverso do comando taint. Ele remove a marcação tainted e restaura o recurso ao seu estado normal. O formato do comando é semelhante ao do taint:
terraform untaint <resource_type>.<resource_name>. Por exemplo:$ terraform untaint alicloud_vswitch.this Resource instance alicloud_vswitch.this has been successfully untainted. -
terraform output: Imprimir parâmetros de saída e seus valores
Se você definir explicitamente um parâmetro de saída no modelo, seu valor será exibido após a execução do comando
apply, mas não após a execução do comandoplan. Para visualizar o valor de saída a qualquer momento, execute o comandoterraform output:$ terraform output vswitchId = vsw-gw8gl31wz********
Comandos comuns para gerenciamento de estado
O gerenciamento de estado no Terraform envolve a administração dos dados no arquivo de estado. Esse arquivo armazena todos os recursos gerenciados pelo Terraform e suas propriedades. O Terraform armazena o conteúdo automaticamente. Para garantir a integridade dos dados, não modifique manualmente o conteúdo do arquivo de estado. Use o comando terraform state para executar operações nos dados de estado.
-
terraform state list: Listar todos os recursos no estado atual
O comando state list lista todos os recursos no estado atual, incluindo fontes de dados, no formato
<resource_type>.<resource_name>. Por exemplo:$ terraform state list data.alicloud_slbs.default alicloud_vpc.default alicloud_vswitch.this -
terraform state show: Mostrar as propriedades de um recurso específico
O comando state show exibe todas as propriedades e seus valores para um recurso específico em formato chave-valor. O formato completo do comando é
terraform state show <resource_type>.<resource_name>. Por exemplo:$ terraform state show alicloud_vswitch.this # alicloud_vswitch.this: resource "alicloud_vswitch" "this" { availability_zone = "eu-central-1a" cidr_block = "172.16.0.0/24" id = "vsw-gw8gl31wz******" vpc_id = "vpc-gw8calnzt*******" } -
terraform state pull: Baixar e exibir o conteúdo do estado atual
O comando state pull exibe os dados brutos do arquivo de estado atual, de forma semelhante ao comando
catem um shell. Por exemplo:$ terraform state pull { "version": 4, "terraform_version": "0.12.8", "serial": 615, "lineage": "39aeeee2-b3bd-8130-c897-2cb8595cf8ec", "outputs": { *** } }, "resources": [ { "mode": "data", "type": "alicloud_slbs", "name": "default", "provider": "provider.alicloud", *** }, { "mode": "managed", "type": "alicloud_vpc", "name": "default", "provider": "provider.alicloud", *** } ] } -
terraform state rm: Remover um recurso específico
O comando state rm remove um recurso do arquivo de estado, mas não exclui o recurso de fato. O formato do comando é:
terraform state rm <resource_type>.<resource_name>. Por exemplo:$terraform state rm alicloud_vswitch.this Removed alicloud_vswitch.this Successfully removed 1 resource instance(s).Após a remoção do recurso do estado, se o conteúdo do modelo permanecer inalterado e você executar o comando apply novamente, um novo recurso idêntico será criado. É possível readicionar o recurso removido usando o comando import.
-
terraform state mv: Mover um recurso específico
Para alterar o arquivo de estado onde um recurso está armazenado, use o comando state mv. Essa ação é semelhante ao comando mv em um shell. O comando possui múltiplas opções. Execute terraform state mv --help para obter detalhes. Este tópico descreve o uso mais comum:
terraform state mv --state=./terraform.tfstate --state-out=<target_path>/terraform-target.tfstate <resource_type>.<resource_name_A> <resource_type>.<resource_name_B>. Por exemplo:$ terraform state mv --state-out=../tf.tfstate alicloud_vswitch.this alicloud_vswitch.default Move "alicloud_vswitch.this" to "alicloud_vswitch.default" Successfully moved 1 object(s)O comando anterior omite a opção padrão
--state=./terraform.tfstate. O comando move o recurso vSwitch do estado atual para um arquivo de estado chamadotf.tfstateno diretório pai e renomeia o recurso vSwitch de "this" para "default". -
terraform refresh: Atualizar o estado atual
O comando refresh atualiza o conteúdo do estado atual. Ele chama a API novamente para recuperar os dados mais recentes e os grava no arquivo de estado.
Outros comandos comuns
Além dos comandos para gerenciamento de recursos e de estado, outros comandos comuns são usados em vários cenários que envolvem modelos e provedores.
-
terraform init: Inicializar e carregar módulos
O comando init inicializa e carrega os módulos necessários, como provedores, provisionadores e módulos.
-
terraform graph: Gerar o gráfico de dependência de recursos
Os recursos definidos em um modelo têm dependências entre si. Para visualizar o gráfico de dependência de recursos, use o comando terraform graph:
$ terraform graph digraph { compound = "true" newrank = "true" subgraph "root" { "[root] alicloud_vpc.default" [label = "alicloud_vpc.default", shape = "box"] "[root] alicloud_vswitch.this" [label = "alicloud_vswitch.this", shape = "box"] ****** "[root] output.vswitchId" -> "[root] alicloud_vswitch.this" "[root] provider.alicloud (close)" -> "[root] alicloud_vswitch.this" ****** "[root] root" -> "[root] provider.alicloud (close)" } }Também é possível exportar a saída deste comando para um arquivo de imagem executando
terraform graph | dot -Tsvg > graph.svg. Primeiro, instale o Graphviz executandobrew install graphviz.
-
terraform validate: Validar a sintaxe do modelo
A escrita de um modelo do Terraform exige seguir um conjunto simples de regras de sintaxe definidas pela ferramenta. Após escrever um modelo, caso queira verificar erros de sintaxe ou se um erro for relatado ao executar o comando plan ou apply, execute o comando terraform validate para identificar a posição e a causa do erro.