มาถึงตอนที่ 2 นะฮะ เป็นเรื่องของตัวแปรที่เราจะใช้ใน Terraform ซึ่งมันก็มีวิธีการเขียนและ syntax เฉพาะ แต่ก็ทำความเข้าใจได้ไม่ยากฮะ


การประกาศ

ประกาศตัวแปร

เราจะใช้ syntax นี้เพื่อประกาศตัวแปรฮะ

variable "<name>" {
  type    = <type>
  default = <default_value>
}

type และ default เป็น attribute ที่เราจะใช้กันบ่อยๆ สำหรับ attribute อื่นสามารถอ่านต่อไปที่ลิงก์ข้างล่างนี้ฮะ

Input Variables - Configuration Language | Terraform | HashiCorp Developer
Input variables allow you to customize modules without altering their source code. Learn how to declare, define, and reference variables in configurations.

กำหนดค่าให้ตัวแปร

ง่ายๆ เลยฮะ ใช้เครื่องหมายเท่ากับก็พอแล้ว แบบนี้

<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 ที่ว่าคือตัวนี้ฮะ

HashiCorp Terraform - Visual Studio Marketplace
Extension for Visual Studio Code - Syntax highlighting and autocompletion for Terraform

นี่ ทำ 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 นะฮะ