Skip to main content

What is Terraform?

Terraform คือ open-source IaC tool จาก HashiCorp — เขียน config ครั้งเดียว deploy ได้ทุก cloud

Terraform คืออะไร?

Terraform เป็นเครื่องมือ Infrastructure as Code ที่:

  • ใช้ภาษา HCL (HashiCorp Configuration Language) เขียน config
  • รองรับ provider มากกว่า 3,000+ ตัว (AWS, GCP, Azure, Cloudflare, GitHub, Datadog, ...)
  • เก็บ state file เพื่อ track ว่า resource ไหนถูกสร้างไปแล้ว
  • ทำ plan/apply workflow — preview ก่อนสร้างจริง

Terraform Architecture

ส่วนประกอบหลัก:

  1. Configuration Files (.tf) — เขียนสิ่งที่อยากได้
  2. Terraform Core — engine ที่อ่าน config + คำนวณ diff
  3. Providers — plugin ที่คุยกับ cloud API จริง
  4. State File — บันทึกสถานะปัจจุบันของ infrastructure

Terraform Workflow (5 ขั้นตอน)

# 1. Init - download provider plugins
terraform init

# 2. Format - จัดรูปแบบ code
terraform fmt

# 3. Validate - เช็ค syntax
terraform validate

# 4. Plan - ดูว่าจะสร้าง/แก้/ลบอะไรบ้าง
terraform plan

# 5. Apply - ลงมือสร้างจริง
terraform apply

ภายหลังถ้าอยากลบทิ้ง:

terraform destroy

ตัวอย่าง: Hello World Terraform

สร้าง S3 bucket บน AWS ด้วย code 8 บรรทัด:

main.tf
provider "aws" {
region = "ap-southeast-1"
}

resource "aws_s3_bucket" "example" {
bucket = "my-first-terraform-bucket-2026"
}

รัน:

terraform init
terraform apply

→ ได้ S3 bucket จริงบน AWS!

Terraform เด่นเพราะอะไร?

จุดเด่นคำอธิบาย
Multi-cloudcode เดียวกัน deploy AWS + GCP + Azure ได้
Declarativeเขียนน้อย แก้ง่าย, tool คิด execution plan ให้เอง
State Managementtrack resources ที่สร้างแล้ว → diff ได้แม่นยำ
Plan before Applypreview การเปลี่ยนแปลงก่อนทำจริง
HCL อ่านง่ายคล้าย JSON แต่อ่านง่ายกว่า + comment ได้
Module ecosystemมี module พร้อมใช้ในทุก use case ที่ Terraform Registry
Open sourceฟรี + community ใหญ่
License Note

ตั้งแต่ Terraform 1.6+ (Aug 2023) HashiCorp เปลี่ยน license จาก MPLBUSL ทำให้ community fork ออกมาเป็น OpenTofu (ฟรี + open source 100%) — code/syntax เหมือนกัน 99%

Terraform vs Other IaC Tools

ToolภาษาMulti-cloudStateใครใช้
TerraformHCLDefault ในวงการ
CloudFormationYAML/JSON❌ AWS-only✅ (managed by AWS)AWS shop ที่ไม่อยาก lock-in tool ใหม่
PulumiPython/TS/GoDev ที่อยากใช้ภาษา programming จริง
AnsibleYAMLConfig mgmt มากกว่า provisioning
OpenTofuHCLคนที่กลัว HashiCorp BUSL license

สรุป

  • Terraform = declarative IaC tool ที่เป็น standard ของวงการ
  • Workflow: init → plan → apply → destroy
  • ใช้ HCL เขียน config, state file track สถานะ, provider คุยกับ cloud
  • รองรับทุก cloud หลัก + service เกือบทุกอย่าง

ต่อไป → Use Cases และ Benefits