Importar um state existente
Um bundle tar.gz (ou um terraform.tfstate avulso) vira o state das units de um stack.
Como os arquivos viram units
- Cada
<caminho>/terraform.tfstatedo bundle vira a unit<caminho>. Um state dentro do.terragrunt-cachede uma unit vai para a unit. prefixremove o começo dos caminhos, para que a chave fique igual aopath_relative_to_include().- Backups (
*.tfstate.backup), pastas.terraforme metadados do macOS (._*) são ignorados. - Qualquer outro arquivo, link, caminho com
..ou state inválido recusa o bundle inteiro, com a lista do que está errado. - A importação grava tudo ou nada.
Simule, depois importe
# Simula: mostra, por unit, serial, recursos e o que aconteceria. Não grava nada.
curl -X POST -H "Authorization: Bearer $ADMIN" "$API/api/v1/orgs/$ORG/stacks/$STACK/state/import?dry_run=true" \
-F file=@prod.tar.gz -F prefix=environments/prod
# Importa.
curl -X POST -H "Authorization: Bearer $ADMIN" "$API/api/v1/orgs/$ORG/stacks/$STACK/state/import" \
-F file=@prod.tar.gz -F prefix=environments/prod
Units que já têm state
Uma unit sem state ganha a versão 1. Uma unit que já tem state aparece como um destes, e só muda se for marcada com -F replace=<unit> (uma vez por unit):
| Resultado | Significado |
|---|---|
same |
igual ao state atual |
newer |
mais novo que o state atual |
older |
mais antigo que o state atual |
conflict |
outro lineage |
Uma unit substituída ganha uma versão nova, e o histórico fica. Se o state importado tiver o mesmo lineage e um serial que não passa do atual, o serial sobe, para que um plano salvo antes não seja aplicado em cima dele.
Uma unit travada não pode receber importação.
A importação pela UI vem com a aba State, que está planejada.