โลโก้ Terraform
อันดับ 86 ใน Top 100 DevOps และ CI/CDBUSL 1.1 (ตรวจสอบเงื่อนไขก่อนใช้เชิงพาณิชย์)

Terraform คืออะไร และใช้สร้างโครงสร้างพื้นฐานอย่างไร

Terraform คือเครื่องมือที่ทำให้การสร้างเซิร์ฟเวอร์ เครือข่าย และทรัพยากรอื่นกลายเป็นโค้ดที่เก็บใน Git ได้ ทีมจึงสร้างสภาพแวดล้อมเดิมซ้ำได้เหมือนกันทุกครั้งและตรวจสอบย้อนหลังได้ว่าใครเปลี่ยนอะไร

หมวดหมู่
DevOps และ CI/CD
ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
1 vCPU · RAM 2 GB
ไลเซนส์
BUSL 1.1 (ตรวจสอบเงื่อนไขก่อนใช้เชิงพาณิชย์)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

Terraform คืออะไร

แทนที่จะคลิกสร้างเครื่องผ่านหน้าเว็บทีละครั้ง Terraform ให้คุณเขียนไฟล์ที่อธิบายว่าระบบควรมีอะไรบ้าง แล้วมันจะเปรียบเทียบกับของจริงและสร้างเฉพาะส่วนที่ยังขาด

หัวใจของ Terraform คือไฟล์ State ที่จดว่าตอนนี้มันจัดการทรัพยากรอะไรอยู่บ้าง การเก็บ State ให้ปลอดภัยและใช้ร่วมกันในทีมได้จึงเป็นเรื่องแรกที่ต้องวางแผน ไม่ใช่เรื่องที่ค่อยคิดทีหลัง

Terraform ใช้ได้กับหลายแพลตฟอร์มผ่าน Provider ทั้งคลาวด์ต่างประเทศ Proxmox VMware และบริการ DNS ทำให้ทีมใช้เครื่องมือเดียวจัดการทุกที่ที่ระบบตั้งอยู่

แผนผังการวางระบบ Terraform บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 8006 / 443 ตัว Terraform และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 1 vCPU แรม 2 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Terraform ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Terraform

ดูก่อนลงมือจริง

คำสั่ง plan บอกล่วงหน้าว่าจะสร้าง เปลี่ยน หรือลบอะไรบ้าง ลดความเสี่ยงจากการเผลอลบระบบจริง

สร้างสภาพแวดล้อมซ้ำได้

ใช้โค้ดชุดเดียวสร้างทั้ง Dev, Staging และ Production ให้เหมือนกัน

รองรับหลายแพลตฟอร์ม

มี Provider สำหรับ Proxmox, VMware, DNS และคลาวด์รายใหญ่ทั่วโลก

เก็บเป็นโค้ดใน Git

ทุกการเปลี่ยนแปลงผ่านการรีวิวเหมือนโค้ดปกติ และย้อนกลับได้

ใช้ Terraform ทำอะไรได้บ้าง

  • สร้างชุดเซิร์ฟเวอร์สำหรับโครงการใหม่ให้เหมือนกันทุกครั้ง
  • จัดการทรัพยากรบน Private Cloud ที่รัน Proxmox ผ่านโค้ด
  • สร้างและลบสภาพแวดล้อมทดสอบอัตโนมัติเมื่อเปิดหรือปิด Pull Request
  • บันทึกโครงสร้างพื้นฐานทั้งหมดเป็นเอกสารที่ตรงกับความจริงเสมอ

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Terraform 3 ระดับ เริ่มจาก 1 vCPU แรม 2 GB ดิสก์ NVMe 20 GB ไปจนถึง 4 vCPU แรม 8 GB ดิสก์ NVMe 80 GB โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เครื่องที่รัน Terraformรันจากเครื่องนักพัฒนาหรือเครื่อง CI ก็ได้1 vCPU2 GBNVMe 20 GB
แนะนำเครื่องกลางที่รัน Terraform ผ่าน Pipeline พร้อมเก็บ State2 vCPU4 GBNVMe 40 GB
ทีมใหญ่หลายทีมใช้ร่วมกันพร้อมระบบล็อก State4 vCPU8 GBNVMe 80 GB

ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ

วิธีติดตั้ง Terraform บน Cloud Server ของ THAI DATA CLOUD

ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server

สิ่งที่ต้องเตรียม

  • สิทธิ์ API ของแพลตฟอร์มที่จะจัดการ เช่น API Token ของ Proxmox
  • ที่เก็บไฟล์ State ที่ทีมเข้าถึงร่วมกันได้และรองรับการล็อก
  • ที่เก็บโค้ดแบบ Git สำหรับรีวิวการเปลี่ยนแปลง

ทดสอบบน Ubuntu Server 24.04 LTS

  1. 1

    ติดตั้ง Terraform

    wget -O- https://apt.releases.hashicorp.com/gpg | \
      sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
      sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt -y install terraform
  2. 2

    เขียนไฟล์กำหนดค่าแรก

    ตัวอย่างนี้ใช้ Provider ของ Proxmox สร้างเครื่องเสมือนจากเทมเพลต

    terraform {
      required_providers {
        proxmox = {
          source  = "bpg/proxmox"
          version = "~> 0.60"
        }
      }
    }
    
    provider "proxmox" {
      endpoint = "https://pve.example.local:8006/"
      api_token = var.pve_token
      insecure  = false
    }
  3. 3

    เตรียมโปรเจกต์

    terraform init
  4. 4

    ดูแผนก่อนลงมือ

    อ่านผลลัพธ์ให้ครบว่ามีบรรทัดที่ขึ้นต้นด้วยเครื่องหมายลบหรือไม่ เพราะนั่นคือทรัพยากรที่จะถูกลบจริง

    terraform plan -out=tfplan
  5. 5

    ลงมือสร้างจริง

    terraform apply tfplan
  6. 6

    ย้าย State ไปเก็บที่ส่วนกลาง

    อย่าเก็บไฟล์ State ไว้บนเครื่องใครคนเดียวหรือคอมมิตขึ้น Git เพราะมีข้อมูลอ่อนไหวและจะชนกันเมื่อทำงานหลายคน ให้ใช้ที่เก็บที่รองรับการล็อก เช่น Object Storage ที่เข้ากันได้กับ S3

    terraform {
      backend "s3" {
        bucket = "tf-state"
        key    = "prod/terraform.tfstate"
        region = "ap-southeast-1"
      }
    }

ตรวจผลลัพธ์ของคำสั่ง plan ทุกครั้งก่อน apply กับระบบจริง เพราะการเปลี่ยนบางอย่าง เช่น การแก้ชื่อทรัพยากร ทำให้ Terraform ลบของเดิมแล้วสร้างใหม่

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
8006 / 443TCPเรียก API ของแพลตฟอร์มปลายทาง (เปิดเฉพาะจากเครื่องที่รัน Terraform)

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • เก็บไฟล์ State ไว้ในที่เก็บส่วนกลางที่เข้ารหัสและรองรับการล็อก
  • ห้ามคอมมิตไฟล์ State หรือไฟล์ตัวแปรที่มีความลับขึ้น Git
  • ใช้ API Token ที่มีสิทธิ์เท่าที่จำเป็น และหมุนเวียนโทเคนตามรอบ
  • ให้การเปลี่ยนแปลงกับระบบจริงต้องผ่านการรีวิวใน Pull Request
  • เปิดการป้องกันการลบสำหรับทรัพยากรสำคัญ เช่น ดิสก์ข้อมูล

ทำไมควรรัน Terraform บน Cloud Server ของ THAI DATA CLOUD

Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง

ใช้ร่วมกับ Private Cloud บน Proxmox ของ THAI DATA CLOUD เพื่อสร้างและปรับเครื่องเสมือนผ่านโค้ด

สร้างสภาพแวดล้อมทดสอบขึ้นมาชั่วคราวแล้วลบทิ้ง ช่วยคุมค่าใช้จ่ายได้ดีกว่าการเปิดเครื่องทิ้งไว้

เก็บไฟล์ State ไว้บน Object Storage ในไทย ทำให้ข้อมูลโครงสร้างระบบไม่ออกนอกประเทศ

คำถามที่พบบ่อยเกี่ยวกับ Terraform

Terraform ใช้กับ Cloud Server ในไทยได้ไหม

ได้เมื่อแพลตฟอร์มปลายทางมี API และมี Provider รองรับ เช่น Private Cloud ที่รัน Proxmox ซึ่งมี Provider ที่ชุมชนดูแลอยู่ ทีมงานของเราช่วยประเมินและวางรูปแบบการใช้งานให้ได้

ทำไมต้องระวังไฟล์ State มากขนาดนั้น

เพราะ State คือแหล่งอ้างอิงเดียวที่ Terraform ใช้ตัดสินว่าจะสร้างหรือลบอะไร ถ้าไฟล์หายหรือไม่ตรงกับความจริง การรันครั้งถัดไปอาจสร้างของซ้ำหรือลบของที่ยังใช้อยู่ นอกจากนี้ในไฟล์ยังมีข้อมูลอ่อนไหวด้วย

ต้องใช้คู่กับ Ansible ไหม

ไม่บังคับ แต่เป็นรูปแบบที่นิยม โดยให้ Terraform สร้างเครื่องและเครือข่าย แล้วให้ Ansible ตั้งค่าภายในเครื่อง เพราะแต่ละตัวถนัดคนละงาน

ให้เราติดตั้ง Terraform ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด