O estado do Terraform
O único arquivo cuja perda vai custar o seu fim de semana.
O estado, a peça central e a mais frágil
Duas pessoas trabalham na mesma infraestrutura. A primeira adiciona uma fila de mensagens, aplica e sai para almoçar. A segunda clonou o repositório uma hora antes, com o próprio terraform.tfstate local, que não conhece a fila. Ela adiciona um banco de dados e aplica. O estado dela não contém a fila, então o Terraform deduz que a fila não existe e que não há nada a fazer com ela — até o dia em que alguém executa terraform destroy sobre um dos dois estados e destrói metade da infraestrutura, deixando a outra metade órfã, ingerenciável e sendo cobrada.
Esse cenário não acontece porque as pessoas são descuidadas. Ele acontece porque o estado padrão é um arquivo local, e um arquivo local é invisível para os outros. O estado não é um cache nem um log: é a única coisa que liga uma linha do seu código a um objeto real no provedor. Sem ele, o Terraform não sabe que aws_s3_bucket.artefacts corresponde ao bucket skillverse-artefacts-demo-4821; ele deduz que é preciso criá-lo, e tenta.
Para que serve exatamente o estado
O estado contém, para cada recurso gerenciado, seu endereço no seu código, seu identificador no provedor e uma cópia de todos os seus atributos no momento da última operação. Veja um trecho:
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão