DigitalOcean Provider เป็นหนึ่งในปลั๊กอินที่ได้รับความนิยมสำหรับทีมที่ใช้ Cloud ราคาประหยัดจัดการ Droplet, Spaces, Managed Database, Kubernetes และ Load Balancer การเชื่อมต่อ DigitalOcean กับ Terraform ทำได้ง่ายกว่า AWS เพราะใช้ API Token ชุดเดียวและไม่มี region/account ซ้อนกันซับซ้อน เหมาะสำหรับองค์กรขนาดกลางหรือโปรเจกต์ที่ต้องการ launch เร็ว
บทความนี้จะแนะนำการสร้าง API Token การตั้งค่า provider block การจัดการ SSH key การสร้าง Droplet ตัวอย่าง และแนวทางรักษาความปลอดภัยของ token
สร้าง API Token บน DigitalOcean
เข้าสู่ DigitalOcean Control Panel แล้วไปที่ API → Tokens คลิก Generate New Token ตั้งชื่อให้สื่อความหมายเช่น terraform-automation เลือก Scope แบบ Read and Write เพื่อให้สามารถสร้างและลบทรัพยากรได้ จดค่า token ที่แสดงครั้งเดียว (ระบบจะไม่แสดงซ้ำ) เก็บใน password manager หรือ Secret Manager
ติดตั้ง Provider ในโปรเจกต์
สร้างไฟล์ versions.tf เพื่อ pin เวอร์ชันของ provider พร้อม source path จาก Terraform Registry ให้ clear และเสริม provider.tf สำหรับ config จริง การแยกไฟล์ช่วยให้ดูแลง่ายเมื่อต้องเพิ่ม provider อื่นในอนาคต
# versions.tf
terraform {
required_version = ">= 1.5"
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
version = "~> 2.42"
}
}
}
# provider.tf
variable "do_token" {
description = "DigitalOcean API Token"
type = string
sensitive = true
}
provider "digitalocean" {
token = var.do_token
}
ใส่ sensitive = true ให้ variable ที่เก็บ token เพื่อไม่ให้แสดงผลใน plan/apply output ลดความเสี่ยงที่ค่าจะหลุดผ่าน log
ส่ง Token ผ่าน Environment Variable
วิธีที่ปลอดภัยและเป็นที่นิยมคือไม่เก็บ token ในไฟล์ .tfvars ที่ commit เข้า git แต่ส่งผ่าน environment variable ชื่อ DIGITALOCEAN_TOKEN หรือ TF_VAR_do_token แทน Terraform จะอ่านค่าอัตโนมัติขณะ plan/apply
export DIGITALOCEAN_TOKEN="dop_v1_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# หรือ
export TF_VAR_do_token="dop_v1_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
terraform init
terraform plan
จัดการ SSH Key บน DigitalOcean
ก่อนสร้าง Droplet แนะนำให้อัปโหลด SSH key ลง DigitalOcean เพื่อใช้ในการเข้าถึงแบบไม่ต้องใช้ password การอัปโหลดสามารถทำผ่านหน้า dashboard หรือใช้ resource ของ provider สร้างให้เสร็จภายใน pipeline เดียว
resource "digitalocean_ssh_key" "default" {
name = "terraform-deploy-key"
public_key = file("~/.ssh/id_ed25519.pub")
}
สร้าง Droplet ตัวอย่าง
เมื่อ provider พร้อม สามารถสร้าง Droplet (VM) ได้ทันที โดยระบุ image, ขนาด, region และ SSH key ที่จะ inject เข้าไป
resource "digitalocean_droplet" "web" {
name = "web-server"
image = "ubuntu-22-04-x64"
size = "s-2vcpu-4gb"
region = "sgp1"
ssh_keys = [digitalocean_ssh_key.default.id]
tags = ["web", "production"]
}
output "droplet_ip" {
value = digitalocean_droplet.web.ipv4_address
}
รัน terraform apply เพื่อสร้างเซิร์ฟเวอร์ ระยะเวลาประมาณ 30 วินาทีถึง 2 นาที เมื่อเสร็จจะได้ droplet_ip ที่พร้อม SSH เข้าไปตั้งค่าต่อ
ใช้ Data Source ค้นหาข้อมูลที่มีอยู่
หากมี image, SSH key หรือ project ที่สร้างผ่าน UI มาก่อน สามารถใช้ data source อ้างถึงได้โดยไม่ต้องสร้างซ้ำ ตัวอย่างการค้นหา image ล่าสุดของ Ubuntu 22.04
data "digitalocean_image" "ubuntu" {
slug = "ubuntu-22-04-x64"
}
data "digitalocean_ssh_key" "existing" {
name = "my-existing-key"
}
resource "digitalocean_droplet" "app" {
image = data.digitalocean_image.ubuntu.slug
ssh_keys = [data.digitalocean_ssh_key.existing.id]
# ...
}
แนวทางรักษาความปลอดภัย Token
- อย่า commit token ลง git เด็ดขาด เพิ่ม
*.tfvarsและ.envใน .gitignore - สร้าง token แยกตามสภาพแวดล้อม (dev, stage, prod) เพื่อจำกัดขอบเขต
- กำหนดอายุ token (expiration) ให้ไม่เกิน 90 วัน หมุนเวียนสม่ำเสมอ
- เก็บ token ใน HashiCorp Vault, AWS Secrets Manager หรือ GitHub Actions Secrets
- เปิด 2FA บนบัญชี DigitalOcean เพื่อป้องกันการเข้าถึง Control Panel โดยตรง
Troubleshooting
ปัญหาที่พบบ่อยคือ error 401 Unauthorized หมายถึง token ไม่ถูกต้องหรือหมดอายุ ตรวจว่าพิมพ์ครบไม่ขาดตัวอักษรและ scope ของ token รวม Read+Write ส่วน error 422 หมายถึง region/size ที่ระบุไม่รองรับคู่กัน ให้ตรวจ region availability ก่อน
สรุป
DigitalOcean Provider ใช้งานง่าย เริ่มจากการสร้าง API Token บน Control Panel ตั้งค่า provider block พร้อม variable แบบ sensitive และส่ง token ผ่าน environment variable การอัปโหลด SSH key สร้าง Droplet และใช้ data source ค้นหา resource เดิมคือพื้นฐานที่ใช้ได้กับทุกโปรเจกต์ ความปลอดภัยของ token คือหัวใจของการจัดการ infrastructure ด้วย automation จึงควรตั้งระยะหมุนเวียนและเก็บใน secret manager เสมอ เมื่อคุ้นกับ provider นี้แล้วจะต่อยอดไปใช้ Spaces, Managed Database หรือ Kubernetes ผ่าน resource ชุดเดียวกันได้ทันที

