- Pulumi คืออะไร
- แนวคิดหลัก
- เปรียบเทียบกับ Terraform
- Workshop: สร้าง AWS S3 Bucket ด้วย Pulumi TypeScript
- แนวทางใช้งานจริง
- แหล่งเรียนรู้
#Pulumi คืออะไร
Pulumi เป็นเครื่องมือ Infrastructure as Code (IaC) สำหรับกำหนด จัดการ และปรับปรุงทรัพยากร Cloud ด้วยภาษาโปรแกรม เช่น TypeScript, Python, Go, C# และ Java แทนการเขียนไฟล์กำหนดค่าอย่างเดียว
#แนวคิดหลัก
- Project: ชุดโค้ด IaC ของระบบ
- Stack: สภาพแวดล้อมแยกกัน เช่น dev, staging, prod
- Provider: ตัวเชื่อมต่อ API ของ AWS, Azure, Google Cloud, Kubernetes ฯลฯ
- State: บันทึกสถานะทรัพยากรที่ Pulumi จัดการ
- Preview: ตรวจสอบแผนเปลี่ยนแปลงก่อนลงมือจริง
#เปรียบเทียบกับ Terraform
| ประเด็น | Pulumi | Terraform |
|---|---|---|
| ภาษา | TypeScript, Python, Go, C#, Java ฯลฯ | HCL เป็นหลัก |
| การใช้ฟังก์ชันและไลบรารี | ใช้ความสามารถของภาษาโปรแกรม | ใช้โมดูลและฟังก์ชัน HCL |
| การจัดการ State | Pulumi Cloud หรือ backend ที่รองรับ | Backend ที่กำหนด |
| Workflow | pulumi preview, pulumi up |
terraform plan, terraform apply |
#Workshop: สร้าง AWS S3 Bucket ด้วย Pulumi TypeScript
ต้องมี Node.js, Pulumi CLI และ AWS credentials ที่ได้รับสิทธิ์เพียงพอ อาจมีค่าใช้จ่ายจาก Cloud
#1. สร้างโครงการ
mkdir pulumi-s3-demo && cd pulumi-s3-demo
pulumi new aws-typescript
เลือกชื่อ Project, Stack และ AWS Region ตามที่ CLI ถาม
#2. เขียน index.ts
import * as aws from "@pulumi/aws";
const bucket = new aws.s3.BucketV2("demo-bucket", {
tags: { Environment: "dev", ManagedBy: "Pulumi" },
});
export const bucketName = bucket.bucket;
#3. ตรวจสอบและ Deploy
pulumi preview
pulumi up
pulumi stack output bucketName
ตรวจสอบรายการเปลี่ยนแปลงก่อนตอบยืนยัน
#4. ลบทรัพยากรหลัง Workshop
pulumi destroy
หาก Bucket มีวัตถุอยู่ การลบอาจล้มเหลว ต้องจัดการข้อมูลภายในก่อน
#แนวทางใช้งานจริง
- แยก Stack ตาม environment และใช้การกำหนดสิทธิ์ขั้นต่ำ
- เก็บ Secret ผ่าน
pulumi config set --secretหลีกเลี่ยงการฝังรหัสผ่านในโค้ด - ตรวจสอบ
pulumi previewใน Pull Request ก่อนอนุมัติ Deployment - กำหนด Policy, Tag และ Budget เพื่อควบคุมความเสี่ยงและค่าใช้จ่าย
- อย่าลืมว่าทรัพยากรบางชนิดอาจมีค่าใช้จ่ายแม้ไม่ได้ใช้งาน
#แหล่งเรียนรู้
- เว็บไซต์ทางการ: https://www.pulumi.com/
- เอกสาร: https://www.pulumi.com/docs/
- AWS Provider: https://www.pulumi.com/registry/packages/aws/