Exportar e excluir
O state continua seu. Você pode baixá-lo quando quiser, e excluir um stack oferece baixá-lo antes.
Exportar o state
O botão Export state… na página do stack baixa o state atual, em claro, sem travar nada. Pela API, é o GET /api/v1/orgs/{org}/stacks/{id}/state/export.
| O quê | Arquivo |
|---|---|
| O stack inteiro | um .tar.gz com um <unit>/terraform.tfstate por unit, o formato que a importação lê |
Uma unit, com ?unit=<chave> |
um .tfstate |
# O stack inteiro.
curl -H "Authorization: Bearer $ADMIN" -o state.tar.gz "$API/api/v1/orgs/$ORG/stacks/$STACK/state/export"
# Uma unit.
curl -H "Authorization: Bearer $ADMIN" -o net.tfstate "$API/api/v1/orgs/$ORG/stacks/$STACK/state/export?unit=net"
O arquivo tem segredos em texto puro. Os providers guardam senhas, chaves e tokens no state. Cada exportação fica registrada, por unit, com quem fez e quando.
- É tudo ou nada: se uma unit não puder ser lida, nada é baixado, e a API responde 503.
- Um stack sem state responde 404.
- Enquanto existir um papel só, qualquer membro da organização pode exportar.
- Escolher uma versão antiga vem com a aba State, que está planejada.
Excluir um stack
Excluir um stack não destrói infraestrutura. O diálogo diz o que vai acontecer:
- Sem state, ou com um state sem recursos. Remove o stack, os runs e as configurações, além desse state vazio.
- Com um state que ainda gerencia recursos. Diz quantos recursos em quantas units, oferece exportar, sem obrigar, e pede para digitar o nome do stack. O stack e o state então são excluídos juntos.
Essa infraestrutura continua de pé, sem nada no First Lume gerenciando. Para removê-la também, rode um destroy antes.
Os arquivos de state guardados são apagados depois de 30 dias, e nenhuma tela os traz de volta. Um state guardado em outro backend, como o seu próprio s3, fica onde está.
Um run em andamento ou uma unit travada recusam a exclusão com 409, em qualquer caso.
Pela API:
curl -X DELETE -H "Authorization: Bearer $ADMIN" "$API/api/v1/orgs/$ORG/stacks/$STACK" \
-d '{"delete_state": true, "confirm": "<nome do stack>"}'
Sem esse corpo, um stack cujo state ainda gerencia recursos é recusado com 409.
Excluir só o state
Para manter o stack e remover o state, use DELETE /api/v1/orgs/{org}/stacks/{id}/state com o nome do stack no corpo, como {"confirm": "<nome>"}. O state excluído também fica guardado por 30 dias.