การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ
สร้างเวิร์กโฟลว์สำหรับวางแผน นำไปใช้ และลบการเปลี่ยนแปลงโครงสร้างพื้นฐานอย่างปลอดภัย พร้อมขั้นตอนตรวจสอบและอนุมัติ
การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ เป็นบทเรียน CI/CD with GitHub Actions & DevOps Pipelines ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CI/CD with GitHub Actions & DevOps Pipelines และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องทำให้การอัปเดต IaC เป็นอัตโนมัติ
การจัดการโครงสร้างพื้นฐานด้วยตนเองอาจล่าช้าและเกิดข้อผิดพลาดได้ง่าย Infrastructure as Code (IaC) ช่วยแก้ปัญหานี้ด้วยการกำหนดโครงสร้างพื้นฐานของคุณไว้ในโค้ด
การทำให้การอัปเดต IaC เป็นอัตโนมัติด้วยเครื่องมืออย่าง GitHub Actions ช่วยให้เกิดความสม่ำเสมอและความรวดเร็ว อีกทั้งลดข้อผิดพลาดจากมนุษย์ ทำให้มั่นใจได้ว่าโครงสร้างพื้นฐานของคุณตรงกับคำจำกัดความที่กำหนดไว้เสมอ
วงจรชีวิตของเวิร์กโฟลว์ IaC
การทำให้ IaC เป็นอัตโนมัติมีวงจรชีวิตที่ชัดเจน ได้แก่ plan, apply และบางครั้งคือ destroy แต่ละขั้นตอนสามารถผสานรวมเข้ากับไปป์ไลน์ CI/CD ได้
- Plan: ตรวจสอบการเปลี่ยนแปลงที่เสนอโดยยังไม่ดำเนินการเปลี่ยนแปลง
- Apply: นำการเปลี่ยนแปลงที่วางแผนไว้ไปใช้กับโครงสร้างพื้นฐาน
- Destroy: ลบทรัพยากรโครงสร้างพื้นฐาน (โปรดใช้ด้วยความระมัดระวังอย่างยิ่ง)
GitHub Actions ช่วยจัดการขั้นตอนเหล่านี้ได้อย่างปลอดภัย
การวางแผนการเปลี่ยนแปลงด้วย Terraform
ก่อนดำเนินการเปลี่ยนแปลงใด ๆ สิ่งสำคัญคือต้องทราบว่าจะเกิดอะไรขึ้น คำสั่ง plan ของ Terraform ช่วยให้คุณดูตัวอย่างการปรับเปลี่ยนโครงสร้างพื้นฐานได้
คำสั่งนี้จะเปรียบเทียบสถานะที่คุณต้องการ (จากโค้ด) กับสถานะปัจจุบันของโครงสร้างพื้นฐาน แล้วแสดงให้เห็นว่าจะมีการเพิ่ม เปลี่ยนแปลง หรือลบทรัพยากรใดบ้าง
ลองเรียกใช้คำสั่งเหล่านี้ในโครงการ Terraform อย่างง่าย:
echo "Initializing Terraform..."
terraform init
echo "Running terraform plan..."
terraform planเวิร์กโฟลว์สำหรับ `terraform plan`
มาสร้างเวิร์กโฟลว์ GitHub Actions ที่เรียกใช้ terraform plan โดยอัตโนมัติทุกครั้งที่มีการส่งโค้ดไปยังสาขาหลักของคุณ วิธีนี้ช่วยให้คุณได้รับข้อมูลป้อนกลับเกี่ยวกับการเปลี่ยนแปลงที่เสนอได้ทันที
จากนั้นคุณสามารถตรวจสอบผลลัพธ์ของ plan ได้โดยตรงในคำขอดึงข้อมูลหรือบันทึกของเวิร์กโฟลว์
name: 'Terraform Plan'
on:
pull_request:
branches:
- main
jobs:
terraform:
name: 'Terraform Plan'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Plan
id: plan
run: terraform plan -no-colorการอนุมัติด้วยตนเองด้วยสภาพแวดล้อม
การนำการเปลี่ยนแปลงโครงสร้างพื้นฐานไปใช้โดยอัตโนมัติอาจมีความเสี่ยง GitHub Environments ช่วยเพิ่มขั้นตอน การอนุมัติด้วยตนเอง ให้กับเวิร์กโฟลว์ของคุณได้
คุณสามารถกำหนดสภาพแวดล้อม (เช่น "staging", "production") และตั้งกฎต่าง ๆ เช่น กำหนดให้ผู้ตรวจสอบเฉพาะรายอนุมัติ หรือต้องรอเป็นระยะเวลาหนึ่งก่อนที่งานปรับใช้จะดำเนินการต่อ
วิธีนี้จะเพิ่มจุดตรวจสอบโดยบุคคลที่สำคัญก่อนดำเนินการที่ละเอียดอ่อน
เวิร์กโฟลว์สำหรับการนำการเปลี่ยนแปลงไปใช้
เพื่อให้การนำการเปลี่ยนแปลงไปใช้อย่างปลอดภัย เราจะกำหนดค่าเวิร์กโฟลว์ให้ทำงานกับ GitHub Environment ที่มีการป้องกัน งานจะหยุดชั่วคราวและรอการอนุมัติจากสมาชิกทีมที่ได้รับมอบหมาย
คำสั่ง terraform apply จะทำงานหลังจากได้รับการอนุมัติเท่านั้น และจะอัปเดตโครงสร้างพื้นฐานของคุณ
name: 'Terraform Apply'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Apply'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Apply
id: apply
run: terraform apply -auto-approveการลบโครงสร้างพื้นฐานอย่างปลอดภัย
คำสั่ง terraform destroy จะลบทรัพยากรทั้งหมดที่กำหนดไว้ในการกำหนดค่า Terraform ของคุณอย่างถาวร การดำเนินการนี้มีอำนาจสูงมากและอาจเป็นอันตรายได้
ควรใช้คำสั่งนี้เฉพาะในสถานการณ์ที่กำหนดและควบคุมไว้แล้ว เช่น การรื้อสภาพแวดล้อมทดสอบชั่วคราว โปรดตรวจสอบซ้ำให้แน่ใจก่อนดำเนินการ
อย่าทำให้ `destroy` เป็นอัตโนมัติโดยไม่มีจุดควบคุมด้วยตนเองที่รัดกุมและการยืนยันหลายขั้นตอน
echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
echo "Destroying infrastructure..."
terraform destroy -auto-approve
else
echo "Destroy operation cancelled."
fiการควบคุมการลบโครงสร้างพื้นฐาน
แม้แต่สำหรับ `destroy` เราก็สามารถใช้ GitHub Environments เพื่อเพิ่มชั้นการป้องกันได้ วิธีนี้ช่วยให้มั่นใจว่าจะไม่มีใครลบทรัพยากรในระบบจริงโดยไม่ได้ตั้งใจหรือโดยมุ่งร้าย หากไม่ได้รับอนุญาตอย่างเหมาะสม
เวิร์กโฟลว์ควรกำหนดให้ต้องได้รับการอนุมัติ และควรเริ่มทำงานได้ด้วยตนเองเท่านั้น โดยผู้มีบทบาทที่กำหนดไว้โดยเฉพาะจะเป็นผู้ดำเนินการ
name: 'Terraform Destroy'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to destroy'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Destroy'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Destroy
id: destroy
run: terraform destroy -auto-approveแนวทางปฏิบัติที่ดีที่สุดสำหรับการทำให้ IaC เป็นอัตโนมัติ
เพื่อรักษาไปป์ไลน์ IaC ให้มีประสิทธิภาพและปลอดภัย:
- การตรวจสอบโค้ด: กำหนดให้มีการตรวจสอบโค้ดสำหรับการเปลี่ยนแปลง IaC ทุกครั้ง
- สิทธิ์เท่าที่จำเป็น: มอบสิทธิ์ให้โทเค็นของเวิร์กโฟลว์และบัญชีบริการเท่าที่จำเป็นขั้นต่ำเท่านั้น
- การล็อกสถานะ: ตรวจสอบให้แน่ใจว่าเครื่องมือ IaC ของคุณ (เช่น Terraform) ใช้การล็อกสถานะเพื่อป้องกันการปรับเปลี่ยนพร้อมกัน
- การเปลี่ยนแปลงทีละเล็กทีละน้อย: หลีกเลี่ยงการอัปเดตโครงสร้างพื้นฐานครั้งใหญ่แบบรวมทุกอย่างไว้ในชุดเดียว
- การแยกสภาพแวดล้อม: ใช้สภาพแวดล้อมที่แยกจากกัน (dev, staging, prod) พร้อมกฎการอนุมัติที่แตกต่างกัน
ตรวจสอบเวิร์กโฟลว์ IaC
คุณได้เรียนรู้เกี่ยวกับการทำให้การอัปเดต IaC เป็นอัตโนมัติด้วยการวางแผน การนำไปใช้ และการลบทรัพยากร ตอนนี้มาทดสอบความเข้าใจของคุณเกี่ยวกับการรักษาความปลอดภัยให้กระบวนการเหล่านี้กัน
สรุป: การอัปเดต IaC แบบอัตโนมัติ
ในบทเรียนนี้ คุณได้เรียนรู้วิธีทำให้เวิร์กโฟลว์ Infrastructure as Code เป็นอัตโนมัติด้วย GitHub Actions โดยครอบคลุมหัวข้อต่อไปนี้:
- การเรียกใช้
terraform planเพื่อดูตัวอย่างการเปลี่ยนแปลงอย่างปลอดภัย - การใช้ GitHub Environments เป็นจุดอนุมัติด้วยตนเองก่อนนำโครงสร้างพื้นฐานไปใช้หรือลบ
- การสร้างเวิร์กโฟลว์สำหรับการดำเนินการ
terraform applyและterraform destroyที่มีการควบคุม - แนวทางปฏิบัติที่ดีที่สุดที่สำคัญสำหรับการทำให้ IaC เป็นอัตโนมัติอย่างปลอดภัยและเชื่อถือได้
การทำให้ IaC เป็นอัตโนมัติช่วยให้คุณจัดการทรัพยากรคลาวด์ได้อย่างมีประสิทธิภาพและมั่นใจ
เรียนรู้ CI/CD with GitHub Actions & DevOps Pipelines ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CI/CD with GitHub Actions & DevOps Pipelines ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ”
สร้างเวิร์กโฟลว์สำหรับวางแผน นำไปใช้ และลบการเปลี่ยนแปลงโครงสร้างพื้นฐานอย่างปลอดภัย พร้อมขั้นตอนตรวจสอบและอนุมัติ คุณปฏิบัติ CI/CD with GitHub Actions & DevOps Pipelines ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CI/CD with GitHub Actions & DevOps Pipelines หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CI/CD with GitHub Actions & DevOps Pipelines บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม
ได้ บทเรียน CI/CD with GitHub Actions & DevOps Pipelines ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- IaC ด้วย Terraform และ GitHub Actions
- การจัดการทรัพยากรคลาวด์
- การทำให้การอัปเดตโครงสร้างพื้นฐานเป็นอัตโนมัติ
- การจัดการสถานะ Terraform และแบ็กเอนด์ระยะไกล