Salvaguardias de Terraform

Salvaguardias de Terraform

Ya tengo docenas de instancias de AWS ejecutándose en producción y me gustaría comenzar a usar Terraform para automatizar la creación de las próximas. He leído que Terraform puede ayudar a practicar el patrón inmutable. Sin embargo, me gustaría evitar cualquier riesgo de destruir cualquier instancia que ya se esté ejecutando. ¿Terraform proporciona alguna protección para evitar esto?

Respuesta1

Sí - usoterraform planantes de cualquier operación. Mostrará una lista completa de los cambios que se realizarán, sinejecutandocualquiera de ellos, para su revisión.

Respuesta2

Terraform no tiene garantías explícitas para esto, pero su diseño general ya le impide tocar los recursos existentes.

Generalmente, cada recurso de Terraform tiene algún identificador principal (por ejemplo, para EC2, un ID de instancia, para S3, un nombre de depósito). Y cada ejecución de Terraform solo debe a) crear nuevos recursos ob) actualizar/eliminar recursos existentes bajo el control de Terraform.

  • En el caso a), si la ID ya existe, obtendrá un error y Terraform no podrá crear nada (nunca sucederá con EC2, pero es posible con los depósitos de S3). Esta es la oportunidad de arreglar el código Terraform.

  • En el caso b), Terraform solo debería funcionar con "sus propios" recursos, dejando el contenido existente de su cuenta en paz.

Uno puede interferir intencionalmente (o accidentalmente) con Terraform reemplazando/cambiando el nombre de sus recursos, lo que dañará las cosas; pero con un uso "normal" nunca he visto este tipo de problemas.

Respuesta3

Puede agregar un bloque de configuración del ciclo de vida al recurso (Ver Configuración de recursos de Terraform); específicamente usando:

lifecycle {
    prevent_destroy = true
}

Esto devolverá un mensaje de error cuando un plan incluya una acción de destrucción del recurso.

información relacionada