Terraform'daki "Yalnızca enterpolasyon ifadeleri kullanımdan kaldırıldı" uyarısını düzeltme


11

Terraform v0.12.16'ya geçtim ve şimdi şöyle görünen bir sürü mesaj alıyorum:

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.

Yüzlerce mesaj var. Onları düzeltmenin otomatik bir yolu var mı?

Yanıtlar:


13

Önce kodu yükselttin mi?

Terraform 0.11, 0.12 ile uyumlu değildir, bu yüzden önce yükseltmeniz gerekir.

terraform init
terraform 0.12upgrade

Terraform kodunuz diğer terraform modüllerini çağırıyorsa, lütfen bu terraform modüllerini de 0.12'ye yükselttiğinizden emin olun.


3
Evet, kodu yeni sürüme geçirdim. Yukarıdaki hataları hâlâ alıyordum.
Kevin Burke

açıklığa kavuşturmak için, modülleri yükseltmek, aynı 2 komutu modül kökünde .terraform / modules / <module_name>
Kim Sant

4

Martin Atkins'in terraform-clean-sözdizimi kodu kullanılabilir ( ipucu için Kevin Burke teşekkürler )

Ben utanmadan kullandım ve docker konteyner içinde paketlenmiş böylece kolayca olmayan linux_amd64 makinelerde, örneğin MacOS çalıştırılabilir:

https://github.com/NoLedgeTech/terraform-clean-syntax-docker

TL&DR (UYARI - bu, tf dosyalarınızı yerinde güncelleyecektir):

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:

Bu araç yardımcı oldu, ancak dizilerdeki değerleri (örneğin alt ağ_kimliği) yorumlamadığını unutmayın. Bunun için, düzenli bir ikame yerine dikkatlice başvurmak zorunda kaldım: "\$\{([^}"]+)\}"Buradaki belgelerdeki enterpolasyon nedeniyle körü körüne uygulanamaz.
Trevor Robinson


0

Bu enterpolasyon sözdizimini kaldırmak için notepad ++ kullandım.

regex:

^(.*)\${(.*)}

şununla değiştir:

\1\2 

-2

Veya basit bir sed kullanabilirsiniz:

sed -i 's/\"\${/\"/g;s/}\"/\"/g' main.tf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.