Atualizei para o Terraform v0.12.16 e agora estou recebendo muitas mensagens parecidas com esta:
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.
Existem centenas dessas mensagens. Existe uma maneira automatizada de corrigi-los?
O código de sintaxe de limpeza de terraform de Martin Atkins pode ser usado (obrigado Kevin Burke pela pista)
Eu o usei descaradamente e empacotado no contêiner do docker para que ele possa ser executado facilmente em máquinas não linux_amd64, por exemplo, no MacOS
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL&DR (AVISO - isso atualizará seus arquivos tf no local):
fonte
"\$\{([^}"]+)\}"
ela não pode ser aplicada às cegas devido à interpolação nos documentos aqui.Essa ferramenta remove automaticamente as aspas e chaves iniciais e finais, corrigindo os avisos: https://github.com/apparentlymart/terraform-clean-syntax
fonte
panic: didn't find any token of type TokenOBrack
Eu usei o bloco de notas ++ para remover essa sintaxe de interpolação.
regex:
substituir com:
fonte
Ou você pode usar um sed simples:
fonte