Uaktualniłem do Terraform v0.12.16 i teraz otrzymuję wiele komunikatów, które wyglądają tak:
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.
Istnieją setki takich wiadomości. Czy istnieje zautomatyzowany sposób ich naprawienia?
Można użyć kodu terraform-clean-syntax Martina Atkinsa (dzięki Kevin Burke za wskazówkę)
Użyłem go bezwstydnie i spakowałem w kontenerze dokera, dzięki czemu można go łatwo uruchomić na maszynach innych niż linux_amd64, np. MacOS:
https://github.com/NoLedgeTech/terraform-clean-syntax-docker
TL&DR (OSTRZEŻENIE - spowoduje to aktualizację plików tf na miejscu):
źródło
"\$\{([^}"]+)\}"
nie można go zastosować na ślepo z powodu interpolacji w dokumentach tutaj.To narzędzie automatycznie usunie dla ciebie początkowe i końcowe cytaty i nawiasy klamrowe, co naprawia ostrzeżenia: https://github.com/apparentlymart/terraform-clean-syntax
źródło
panic: didn't find any token of type TokenOBrack
Użyłem notatnika ++, aby usunąć tę składnię interpolacji.
regex:
zamienić:
źródło
Lub możesz użyć prostego sed:
źródło