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?
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
go get github.com/apparentlymart/terraform-clean-syntax
terraform-clean-syntax .
Avez-vous mis à niveau le code en premier?
Terraform 0.11 n'est pas compatible avec 0.12, vous devez donc le mettre à niveau en premier.
terraform init
terraform 0.12upgrade
Si votre code Terraform appelle d'autres modules terraform, assurez-vous d'avoir également mis à niveau ces modules terraform à 0,12.
Le code terraform-clean-syntax de Martin Atkins peut être utilisé (merci Kevin Burke pour un 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):
docker pull pniemiec/terraform-clean-syntax-docker
cd <DIRECTORY_WITH_TF_FILES>
terraform init
terraform plan # This shows a lot of warnings
docker run --rm -v $(pwd):/code -t pniemiec/terraform-clean-syntax-docker
terraform plan # This does not show a lot of warnings :sweat_smile:
J'ai utilisé notepad ++ pour supprimer cette syntaxe d'interpolation.
regex:
^(.*)\${(.*)}
replace_with:
\1\2