
ที่มาภาพ: Unknown Source
วิธีตั้งค่า Pulumi พร้อม GitHub Actions เพื่อสร้าง Infrastructure‑as‑Code อัตโนมัติบนคลาวด์หลายแห่ง
⚡ สรุป 30 วิ
การใช้ Pulumi ร่วมกับ GitHub Actions ทำให้คุณสามารถสร้าง Infrastructure‑as‑Code (IaC) แบบอัตโนมัติบนคลาวด์หลายแห่งได้ในขั้นตอนเดียว บทความนี้จะสอนตั้งค่าอย่างเป็นระบบ ตั้งแต่เตรียมเครื่องมือจนถึงการปร…
ภาพรวม — Overview
การใช้ Pulumi ร่วมกับ GitHub Actions ทำให้คุณสามารถสร้าง Infrastructure‑as‑Code (IaC) แบบอัตโนมัติบนคลาวด์หลายแห่งได้ในขั้นตอนเดียว บทความนี้จะสอนตั้งค่าอย่างเป็นระบบ ตั้งแต่เตรียมเครื่องมือจนถึงการปรับใช้จริง
สิ่งที่ต้องมีล่วงหน้า — Prerequisites
ก่อนเริ่มคุณควรตรวจสอบว่ามีสิ่งต่อไปนี้พร้อมใช้งานแล้วหรือไม่
- บัญชีคลาวด์ เช่น AWS, Azure, GCP ที่ได้รับสิทธิ์สร้างทรัพยากร
- Pulumi CLI เวอร์ชันล่าสุดติดตั้งบนเครื่องพัฒนา
- GitHub Repository ที่จะใช้เก็บโค้ด IaC และ workflow
**Tip: หากต้องการทำงานหลายคลาวด์พร้อมกัน ให้สร้าง Service‑Principal หรือ IAM User แยกตามแต่ละผู้ให้บริการ แล้วบันทึกค่า Credential ไว้ใน Secrets ของ GitHub
สร้าง Repository บน GitHub — Repository Setup
ขั้นแรกให้เตรียมพื้นที่เก็บโค้ดและตั้งค่าความปลอดภัยพื้นฐาน
- เปิด Repository ใหม่บน GitHub (Public/Private ตามความต้องการ)
- เพิ่มไฟล์ `.gitignore` ที่รวม `node_modules/`, `.pulumi/`, `*.bak` ฯลฯ
- สร้าง GitHub Secrets สำหรับแต่ละคลาวด์ เช่น `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AZURE_CLIENT_ID` เป็นต้น
เขียนโปรแกรม Pulumi — Write Pulumi Program
Pulumi รองรับหลายภาษา เราจะใช้ TypeScript เป็นตัวอย่าง
- สร้างโฟลเดอร์ `infra/` แล้วรัน `pulumi new aws-typescript` หรือ `pulumi new azure-typescript` ตามต้องการ
- แก้ไขไฟล์ `index.ts` เพื่อกำหนดทรัพยากร เช่น VPC, Storage Account, หรือ Cloud SQL
- ใช้ Stack Config (`pulumi config set`) เก็บค่าที่แตกต่างระหว่างคลาวด์
ตั้งค่า GitHub Actions — Configure GitHub Actions
สร้างไฟล์ workflow ที่จะทำงานเมื่อมีการ push ไปยัง branch `main`
```yaml name: Pulumi Deploy
on: push: branches:
- main
jobs: deploy: runs-on: ubuntu-latest strategy: matrix: cloud: [aws, azure, gcp]
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3 with: node-version: '20'
- name: Install Pulumi
run: curl -fsSL https://get.pulumi.com | sh
- name: Set Cloud Secrets
env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} run: | if [ "${{ matrix.cloud }}" = "aws" ]; then export PULUMI_CONFIG_PASSPHRASE=your-passphrase elif [ "${{ matrix.cloud }}" = "azure" ]; then export ARM_CLIENT_ID=$AZURE_CLIENT_ID fi
- name: Pulumi Preview & Up
run: | pulumi stack select dev-${{ matrix.cloud }} pulumi preview pulumi up --yes ```
- matrix.cloud ทำให้ workflow รันแยกตามผู้ให้บริการแต่ละตัว
- ใช้ `pulumi stack select` เลือกสแตกที่ตั้งค่าไว้เฉพาะคลาวด์นั้น
ปรับใช้บนหลายคลาวด์พร้อมกัน — Deploy to Multiple Clouds
เมื่อ Workflow ทำงานครบทุก matrix คุณจะได้ทรัพยากรที่สร้างในแต่ละผู้ให้บริการโดยอัตโนมัติ
- ตรวจสอบผลลัพธ์จาก Action log เพื่อแน่ใจว่าไม่มีข้อผิดพลาด
- ใช้ `pulumi stack output` ดึงค่า IP, URL หรือ Credential ที่จำเป็นต่อการเชื่อมต่อระหว่างคลาวด์
เปรียบเทียบฟีเจอร์สำคัญของผู้ให้บริการ — Comparison Table
| ฟีเจอร์ | AWS | Azure | GCP |
|---|---|---|---|
| การจัดการ Secrets | Parameter Store / SSM | Key Vault | Secret Manager |
| การสร้าง VPC/Network | VPC + Subnet | Virtual Network + Subnet | VPC + Subnetwork |
| รองรับ Pulumi Stack | ใช่ (aws) | ใช่ (azure) | ใช่ (gcp) |
เคล็ดลับและข้อควรระวัง — Tips & Common Issues
- จัดการ State อย่างปลอดภัย – ใช้ backend ที่เป็น Remote เช่น S3, Azure Blob หรือ GCS แทนไฟล์โลคัล
- หลีกเลี่ยงการเปิดเผย Credential – ตรวจสอบว่า Secrets ไม่ถูกเขียนลงใน Log (ใช้ `echo ::add-mask::` หากจำเป็น)
- ทำ Preview ก่อน Up – Pulumi preview ช่วยให้เห็นแผนการเปลี่ยนแปลงก่อนดำเนินจริง ลดความเสี่ยง
**Tip: ถ้า Workflow ล้มเหลวที่ขั้นตอน `pulumi up` ให้ใช้ `pulumi refresh` เพื่อตรวจสอบสถานะจริงของคลาวด์และทำการแก้ไขในโค้ดต่อไป
สรุป — Summary
บทความนี้อธิบายวิธีตั้งค่า Pulumi ร่วมกับ GitHub Actions เพื่อสร้าง IaC บน AWS, Azure, และ GCP อย่างอัตโนมัติ
- ตั้งค่า GitHub Secrets ให้ครบตามผู้ให้บริการ
- เขียนโค้ด Pulumi ที่แยกสแตกตามคลาวด์ (`dev-aws`, `dev-azure`, ฯลฯ)
- ใช้ matrix strategy ใน GitHub Actions เพื่อรัน Deploy บนหลายคลาวด์พร้อมกัน
ด้วยขั้นตอนเหล่านี้ คุณจะมีระบบ CI/CD สำหรับโครงสร้างพื้นฐานที่ทำงานสม่ำเสมอ ลดการทำซ้ำและเพิ่มความเร็วในการปรับใช้บนคลาวด์หลายแห่งอย่างมั่นคง.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่า Pulumi พร้อม GitHub Actions เพื่อสร้าง Infrastructure‑as‑Code อัตโนมัติบนคลาวด์หลายแห่ง
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 20 กรกฎาคม 2569 เวลา 19:50



