J'ai mis à niveau vers Terraform v0.12.16 et maintenant je reçois beaucoup de messages qui ressemblent à ceci:
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.
Il y a des centaines de ces messages. Existe-t-il un moyen automatisé de les corriger?
Le code terraform-clean-syntax de Martin Atkins peut être utilisé (merci Kevin Burke pour son indice)
Je l'ai utilisé sans vergogne et emballé dans un conteneur Docker afin qu'il puisse être facilement exécuté sur des machines non linux_amd64, par exemple MacOS:
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL&DR (AVERTISSEMENT - cela mettra à jour vos fichiers tf en place):
la source
"\$\{([^}"]+)\}"
elle ne peut pas être appliquée à l'aveugle en raison de l'interpolation dans les documents ici.Cet outil supprimera automatiquement les guillemets et accolades de début et de fin, ce qui corrige les avertissements: https://github.com/apparentlymart/terraform-clean-syntax
la source
panic: didn't find any token of type TokenOBrack
J'ai utilisé notepad ++ pour supprimer cette syntaxe d'interpolation.
expression régulière:
remplacer par:
la source
Ou vous pouvez utiliser un sed simple:
la source