มาใช้ Terraform กันเถอะ – ตอนที่ 2 ตัวแปรและการแทนค่า
in this series
- มาใช้ Terraform กันเถอะ – ตอนที่ 1 เรื่องพื้นฐาน
- มาใช้ Terraform กันเถอะ – ตอนที่ 2 ตัวแปรและการแทนค่า
- มาใช้ Terraform กันเถอะ – ตอนที่ 3 state ร่วมกัน
- มาใช้ Terraform กันเถอะ – ตอนที่ 4 modular เอามาเชื่อม
มาถึงตอนที่ 2 นะฮะ เป็นเรื่องของตัวแปรที่เราจะใช้ใน Terraform ซึ่งมันก็มีวิธีการเขียนและ syntax เฉพาะ แต่ก็ทำความเข้าใจได้ไม่ยากฮะ
การประกาศ
ประกาศตัวแปร
เราจะใช้ syntax นี้เพื่อประกาศตัวแปรฮะ
variable "<name>" {
type = <type>
default = <default_value>
}
type
และ default
เป็น attribute ที่เราจะใช้กันบ่อยๆ สำหรับ attribute อื่นสามารถอ่านต่อไปที่ลิงก์ข้างล่างนี้ฮะ

กำหนดค่าให้ตัวแปร
ง่ายๆ เลยฮะ ใช้เครื่องหมายเท่ากับก็พอแล้ว แบบนี้
<name> = <value>
กำหนดตัวแปรเข้ากับ resource
ทีนี้ พอเราจะผูกตัวแปรเข้ากับ attribute ของ resource ก็ให้ใช้ var.
ขึ้นต้น แล้วตามด้วยชื่อตัวแปรนั้นฮะ แบบนี้
resource "resource_A" "resource_name_A" {
attribute_1 = var.<variable_name_1>
attribute_2 = var.<variable_name_2>
}
VSCode Plugin
และขอนำเสนอ plugin ของ VSCode สำหรับนักพัฒนา Terraform ฮะ เขียนได้ไว เขียนผิดน้อยเพราะมันคอยตรวจให้ และ plugin ที่ว่าคือตัวนี้ฮะ
นี่ ทำ auto-complete ให้ด้วยแหละ

Files pattern
ครั้งที่แล้วเราทำแบบพื้นฐานสุด คือ มีแค่ main.tf
เพียง file เดียว แต่พอเรากำหนดตัวแปรมาใช้ ผมแนะนำให้แยกเป็นแบบนี้นะฮะ เพราะเวลาเราใช้งานจริง มันไม่ได้มีแค่ 1 environment เลยให้เราแยกตาม environment ของเราที่มีฮะ และมันสามารถรองรับการเลือก variable file ได้ด้วย ติดตามอ่านต่อไปนะฮะ
.
├── main.tf
├── variables.tf
└── var-dev.vars
main.tf
อันนี้ก็คือ tf
script ของเรานั่นแหละ
variables.tf
เป็น file ที่เราประกาศตัวแปรไป
var-dev.vars
อันนี้แหละ คือ variable file ซึ่งอย่างที่เล่าไปในบล็อกแรกไป ว่าชื่อเนี่ยจะเป็นอะไรก็ได้ แค่สื่อความหมายก็พอ อาจจะเป็น dev.tfvars
หรืออะไรก็ได้ ขอแค่ให้ข้างในเป็น syntax ของการกำหนดค่าตัวแปรที่ถูกต้องก็ถือว่าใช้ได้ละ แต่ก็ขอแนะนำให้เป็นนามสกุล .tfvars
เพื่อให้ plugin ข้างบนมันทำงานได้ดีฮะ แต่ไม่ใช่ในบล็อกนี้นะฮะ ;P
ตัวอย่าง file ก็จะประมาณนี้ฮะ
main.tf
variables.tf
var-dev.vars
ได้เวลาใช้งานจริง
file พร้อม อะไรพร้อมแล้วล่ะเนอะ
Plan
รวบรัดว่า validate เรียบร้อยแล้ว เรามา plan กัน
terraform plan
คำสั่งมาแบบนี้ Terraform จะถามเราต่อ ว่าให้กรอกค่าตัวแปรนี้ๆ ว่าอะไร เพราะมันไปตรวจเจอว่า tf
script ของเรามีการกำหนดตัวแปรเอาไว้อยู่

แต่เพราะว่าเรามี variable file แล้วยังไงล่ะ เราก็ป้อนมันเข้าไป แบบนี้
terraform plan -var-file=<filepath>

Apply
เช็คทุกอย่างโอเค ก็ได้เวลา apply ด้วยความมั่นใจฮะ
terraform apply -var-file=<filepath> -auto-approve

Destroy
พอจะลบทิ้ง ก็ใช้คำสั่งนี้ไป
terraform destroy -var-file=<filepath> -auto-approve

ขอให้ชีวิตสะดวกขึ้น ด้วย Terraform นะฮะ