Salvaguardas do Terraform

Salvaguardas do Terraform

Já tenho dezenas de instâncias AWS em produção e gostaria de começar a usar o Terraform para automatizar a criação das próximas. Eu li que o Terraform pode ajudar a praticar o padrão imutável. No entanto, gostaria de evitar qualquer risco de destruir qualquer instância já em execução. O Terraform oferece alguma proteção para evitar isso?

Responder1

Sim - useterraform planantes de qualquer operação. Irá gerar uma lista completa de alterações que serão feitas, sem realmenteexecutandoqualquer um deles, para sua revisão.

Responder2

O Terraform não possui salvaguardas explícitas para isso, mas seu design geral já o impede de tocar nos recursos existentes.

Geralmente, todo recurso Terraform possui algum identificador primário (por exemplo, para EC2, um ID de instância, para S3, um nome de bucket). E cada execução do Terraform deve apenas a) criar novos recursos ou b) atualizar/excluir recursos existentes sob o controle do Terraform.

  • No caso a) se o ID já existir, você receberá um erro e o Terraform não poderá criar nada (nunca acontecerá com EC2, mas é possível com buckets S3). Esta é a oportunidade de corrigir o código Terraform.

  • No caso b) o Terraform deverá funcionar apenas com recursos “próprios”, deixando de lado o conteúdo existente da sua conta.

Pode-se interferir intencionalmente (ou acidentalmente) no Terraform, substituindo/renomeando seus recursos, o que quebrará as coisas; mas com o uso "normal" nunca vi esse tipo de problema.

Responder3

Você pode adicionar um bloco de configuração de ciclo de vida ao recurso (Consulte Configuração de recursos do Terraform); especificamente usando:

lifecycle {
    prevent_destroy = true
}

Isto retornará uma mensagem de erro quando um plano incluir uma ação de destruição no recurso.

informação relacionada