Actualicé a Terraform v0.12.16 y ahora recibo muchos mensajes que se ven así:
Warning: Interpolation-only expressions are deprecated
on ../modules/test-notifier/test_notifier.tf line 27, in resource "aws_sns_topic_policy" "default":
27: arn = "${aws_sns_topic.default.arn}"
Terraform 0.11 and earlier required all non-constant expressions to be
provided via interpolation syntax, but this pattern is now deprecated. To
silence this warning, remove the "${ sequence from the start and the }"
sequence from the end of this expression, leaving just the inner expression.
Template interpolation syntax is still used to construct strings from
expressions when the template includes multiple interpolation sequences or a
mixture of literal strings and interpolations. This deprecation applies only
to templates that consist entirely of a single interpolation sequence.
Hay cientos de estos mensajes. ¿Existe una forma automatizada de solucionarlos?
Se puede usar el código de sintaxis terraform-clean-clean de Martin Atkins (gracias Kevin Burke por la pista)
Lo he usado descaradamente y lo he empaquetado dentro del contenedor docker para que pueda ejecutarse fácilmente en máquinas que no sean linux_amd64, por ejemplo, MacOS:
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL&DR (ADVERTENCIA: esto actualizará sus archivos tf en su lugar):
fuente
"\$\{([^}"]+)\}"
no se puede aplicar a ciegas debido a la interpolación en los documentos aquí.Esta herramienta eliminará automáticamente las comillas y llaves iniciales y finales, lo que corrige las advertencias: https://github.com/apparentlymart/terraform-clean-syntax
fuente
panic: didn't find any token of type TokenOBrack
Usé notepad ++ para eliminar esa sintaxis de interpolación.
regex:
reemplazar con:
fuente
O puede usar un sed simple:
fuente