Voltar
Como importar recursos existentes para o OpenTofu

Spacelift compara formas de importar recursos existentes para o OpenTofu e recomenda import blocks

Aprofundamento CEVIU

Aprofundamento

O tutorial da Spacelift compara duas formas de trazer para o OpenTofu recursos criados fora do código. O comando tofu import da CLI trata um objeto por vez e grava direto no state, sem preview nem aprovação. O import block é avaliado no tofu plan e executado no tofu apply, então a mudança passa por revisão e fica registrada no código. Por isso a recomendação é usar os blocos.

Os blocos existem desde o OpenTofu 1.6. O for_each chegou na 1.7, e o argumento identity na 1.12. O identity serve para recursos com chave composta, como o aws_security_group_rule, e substitui a string única do argumento id por um objeto baseado no schema de identidade do recurso. A geração de configuração com -generate-config-out segue experimental e não funciona com for_each nem count. O guia manda tratar o código gerado como rascunho. Entre as práticas citadas estão usar remote state, ativar versionamento do state antes de importar e importar em lotes pequenos via CI, revisando até cerca de 20 recursos por pull request.

Por que isso importa

Para quem opera pipelines de IaC, o import block muda o fluxo. O import deixa de ser um passo manual e sem rastro e vira mudança revisável em pull request, com plan visível antes de qualquer alteração no state. Isso vale em migrações, recuperação de state e correção de mudanças de emergência. Como a versão do OpenTofu define quais recursos você tem (for_each, identity), vale conferir a versão fixada nos pipelines antes de planejar um lote grande.

Perguntas frequentes

Qual a diferença entre tofu import e import block?

O comando da CLI importa um recurso por vez e grava direto no state, sem preview. O import block é avaliado no plan e executado no apply, então passa por revisão e fica registrado no código. A Spacelift recomenda o bloco.

Posso importar vários recursos de uma vez?

Sim, com import block e for_each, disponível desde o OpenTofu 1.7. Você declara o for_each no bloco e usa each.value no endereço do argumento to. Pela CLI seria preciso rodar o comando uma vez por recurso.

Para que serve o argumento identity?

Ele chegou no OpenTofu 1.12 e identifica o recurso por um objeto, com atributos definidos no schema de identidade do tipo. É útil quando o identificador é uma chave composta. O argumento id, mais antigo, usa uma string única no formato do provider.

Posso confiar na configuração gerada por -generate-config-out?

Não sem revisão. O recurso é experimental e não funciona com for_each nem count. O guia manda tratar o resultado como rascunho e remover atributos nulos e valores default antes de commitar.

Fontes

Avalie este artigo:
Categoria
CEVIU DevOps
Publicado
09 de novembro de 2026
Editoria
CEVIU DevOps

Quer receber mais sobre CEVIU DevOps?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser