แก้ไขคำเตือน“ การแสดงออกเฉพาะการแก้ไขเท่านั้นที่ไม่สนับสนุน” ใน Terraform


11

ฉันอัปเกรดเป็น Terraform v0.12.16 และตอนนี้ฉันได้รับข้อความมากมายที่มีลักษณะเช่นนี้:

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.

มีหลายร้อยข้อความเหล่านี้ มีวิธีอัตโนมัติในการแก้ไขหรือไม่

คำตอบ:


13

คุณอัพเกรดรหัสก่อนหรือไม่

Terraform 0.11 เข้ากันไม่ได้กับ 0.12 ดังนั้นคุณต้องอัพเกรดก่อน

terraform init
terraform 0.12upgrade

หากรหัส Terraform ของคุณโทรหาโมดูลอื่น ๆ โปรดตรวจสอบให้แน่ใจว่าคุณได้อัพเกรดโมดูลเหล่านี้เป็น 0.12 เช่นกัน


3
ใช่ฉันอัปเกรดรหัส ฉันยังคงได้รับข้อผิดพลาดข้างต้น
Kevin Burke

jus เพื่อชี้แจงการอัพเกรดโมดูลหมายถึงการรัน 2 คำสั่งเดียวกันนี้ในรูทโมดูลเช่น .terraform / modules / <module_name>
Kim Sant

4

สามารถใช้รหัสพื้นผิวทำความสะอาดของมาร์ตินแอตกินส์(ขอบคุณเควินเบิร์คสำหรับเบาะแส)

ฉันได้ใช้อย่างไร้ยางอายและบรรจุภายในคอนเทนเนอร์ docker เพื่อให้สามารถทำงานได้อย่างง่ายดายบนเครื่องที่ไม่ใช่ linux_amd64 เช่น MacOS:

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

TL&DR (คำเตือน - สิ่งนี้จะอัปเดตไฟล์ tf ของคุณ):

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:

เครื่องมือนี้มีประโยชน์ แต่โปรดทราบว่าจะไม่ส่งผลต่อค่าภายในอาร์เรย์ (เช่น subnet_ids) ด้วยเหตุนี้ฉันต้องถอยกลับไปใช้การทดแทน regex อย่างระมัดระวัง: "\$\{([^}"]+)\}"มันไม่สามารถใช้อย่างสุ่มสี่สุ่มห้าได้เนื่องจากการแก้ไขในเอกสารที่นี่
Trevor Robinson

2

เครื่องมือนี้จะตัดเครื่องหมายคำพูดเริ่มต้นและคำลงท้ายและเครื่องหมายวงเล็บให้คุณโดยอัตโนมัติซึ่งจะแก้ไขคำเตือน: https://github.com/apparentlymart/terraform-clean-syntax

go get github.com/apparentlymart/terraform-clean-syntax
terraform-clean-syntax .

ได้รับ:panic: didn't find any token of type TokenOBrack
Spanky


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.