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
- spacelift.iofonte original
- Categoria
- CEVIU DevOps
- Publicado
- 09 de novembro de 2026
- Editoria
- CEVIU DevOps

