มาใช้ Terraform กันเถอะ

Rachanee Saengkrajai
3 min readAug 5, 2020

หลังจากใช้ Azure มาซักพัก ก็พบว่า เราเสียเวลาในการจัดการ resources เยอะมาก เช่น จะ set up test environment ก็ต้องสร้าง resources หลายตัว กว่าจะพร้อมใช้ และยังมีปัญหาการตั้งชื่อ resources ไปคนละทิศละทางอีก >_<

ก่อนหน้านี้ก็แก้ปัญหาโดยการใช้ Azure Resource Manager (ARM) Template แต่ก็เจอปัญหาความไม่สเถียร Template ที่รันได้เมื่ออาทิตย์ก่อน มาอาทิตย์นี้กลับไม่ได้ และการจัดการ resource dependencies ก็ค่อนข้างยุ่งยาก

พอได้มาลองใช้ Terraform ก็พบว่ามันง่ายและมีประสิทธิภาพมาก เลยอยากจะมาแชร์กันคะ

Terraform คืออะไร?

Terraform เป็นเครื่องมือที่ใช้จัดการ infrastructure ได้อย่างปลอดภัยและมีประสิทธิภาพ โดยใช้ configuration syntax ที่สั้นและเข้าใจง่าย (Infrastructure as Code)

Terraform สามารถใช้จัดการ Cloud ได้เกือบทุกเจ้า, Docker, Kubernetes และอีกมากมายกว่า 200+ providers

ทำไม Terraform ถึงน่าใช้?

  1. เราสามารถจัดการ resources ได้ด้วย configuration syntax ที่สั้นและเข้าใจง่าย และแชร์โค้ดเพื่อใช้ในทีมและต่อยอดได้
configuration สั้นและดูง่ายกว่า ARM Template เยอะ

2. Terraform แสดงสิ่งที่กำลังจะทำ ก่อนที่จะมีการสร้าง/ลบ/แก้ไข resources จริงๆ เพื่อให้เราทราบว่าจะมีการทำอะไรกับ Infrastructure บ้าง ช่วยลดโอกาสผิดพลาด

3. Terraform จะสร้าง resource-dependencies graph เพื่อจัดลำดับการสร้าง/ลบ/แก้ไข resources ได้อย่างมีประสิทธิภาพสูงสุด

4. สามารถรัน configuration ซ้ำได้เรื่อยๆ โดยที่ไม่ทำให้ resources เดิมมีปัญหา

5. ใช้จัดการ resources ได้แทบทุก platforms

ใช้อย่างไร?

เรามาลอง create Azure resource ง่ายๆ ด้วย Terraform กันนะคะ

1. ติดตั้ง Terraform ที่เครื่องเรา

  • เข้าไป download package ที่ หน้า Terraform Download
  • Extract file ไว้ในโฟลเดอร์ที่ต้องการ เช่น C:\Program Files
  • Set PATH environment ไปที่ folder ที่มี file terraform.exe
  • Verify ว่าเราติดตั้งเรียบร้อยโดยการรัน terraform version

2. สร้าง Configuration file

สร้างโฟลเดอร์เปล่าขึ้นมา และสร้างไฟล์ main.tf ที่มีคอนเทนต์ตามด้านล่างนี้ เพื่อ

  • สร้าง resource group ชื่อ test-resource-group
  • สร้าง app service plan ชื่อ coreapi-appserviceplan
  • สร้าง app service ชื่อ coreapi-appservice

3. Run Configuration

  • เปิด cmd ใน folder ที่เราสร้างไฟล์ main.tf
  • Run command terraform init
  • Run command terraform apply
    Terraform จะแสดง excution plan เราก็พิมพ์ yes เพื่อเริ่ม execute เลย

เมื่อ execute เสร็จ ก็จะขึ้นประมาณนี้

ถ้าเข้าไปดูที่ Azure portal ก็จะเห็นว่า resource ถูกสร้างเรียบร้อย

ง่ายใช่ไหมคะ?

ต่อไปก็ลองแก้ configuration file โดยการ update resource setting/add more resources/remove resources แล้วก็รัน terraform apply ดูนะคะ ว่าจะเกิดอะไรขึ้น

Reference

  1. ดูข้อมูล Resources อื่นๆของ Azure ที่ https://www.terraform.io/docs/providers/azurerm/
  2. ศึกษา Terraform Configuration Language เพิ่มเติม ที่ https://www.terraform.io/docs/configuration/index.html

--

--