20 part series

Terraform Từ Cơ Bản Đến Thực Chiến

Học Terraform từ con số không tới khi dựng được hạ tầng AWS đa môi trường qua CI/CD. Series đi qua HCL, provider và resource, state và remote state với S3, biến và biểu thức, modules, đa môi trường, lifecycle, kiểm thử và pipeline — khép lại bằng một dự án capstone hoàn chỉnh. Mọi lệnh chạy thật trên AWS, code lưu tại github.com/nghiadaulau/terraform-series. Bám docs chính thức HashiCorp, Terraform 1.15 và AWS provider v6.

13

Kết Hợp Module, Terraform Registry, và Pin Phiên Bản

Nối các module lại bằng cách đưa output của module này vào input của module kia, lấy module dùng chung từ Terraform Registry với nguồn và phiên bản pin chặt, và hiểu vì sao khóa phiên bản module quan trọng cho sự ổn định. Demo thật: một module Registry cùng hai module local nối với nhau.

Kai··4 min read·AWSModule
14

Module Mạng Thực Tế: VPC, Subnet, và EC2

Ráp mọi thứ Part IV thành một module hạ tầng nền hữu dụng: VPC với subnet công khai cho nhiều vùng, internet gateway và route table, sinh CIDR bằng cidrsubnet và subnet bằng for_each. Rồi đặt một EC2 ra Internet trong mạng đó. Đây là kiểu module nền mà gần như dự án nào cũng cần.

Kai··5 min read·AWSEC2
15

Nhiều Môi Trường: Workspace và Bố Cục Thư Mục

Dev, staging, prod cần state tách biệt. Có hai cách: workspace giữ nhiều state trong cùng một backend, và bố cục thư mục tách mỗi môi trường ra một thư mục với backend riêng. Bài này demo cả hai, và chỉ rõ vì sao workspace KHÔNG hợp để phân tách mạnh giữa prod và dev — đúng cảnh báo của tài liệu.

Kai··6 min read·DevOpsAWS
16

Đọc State Khác và Refactor: remote_state, moved, removed

Khi tách hạ tầng ra nhiều state, terraform_remote_state cho phép một config đọc output của config khác. Và khi tổ chức lại code, moved block đổi tên resource không xóa-tạo lại, removed block gỡ resource khỏi state mà không destroy — cả hai khai báo ngay trong cấu hình thay cho lệnh state mv/rm tay ở bài 7.

Kai··5 min read·DevOpsAWS
17

Lifecycle và Provider Nâng Cao

Các tính năng điều khiển vòng đời resource và provider: create_before_destroy, prevent_destroy, ignore_changes, replace_triggered_by; provider alias để chạy đa vùng trong một cấu hình; terraform_data thay null_resource; provisioner như giải pháp cuối; và check block kiểm tra chỉ cảnh báo. Mỗi tính năng kèm demo thật.

Kai··5 min read·DevOpsAWS
18

CI/CD Cho Terraform: GitHub Actions, OIDC, và Quét Chất Lượng

Đưa Terraform vào pipeline: plan tự động trên pull request, apply khi merge, xác thực AWS bằng OIDC không cần lưu access key. Gắn bộ quét chất lượng fmt, validate, tflint, Trivy và Checkov vào pipeline — với output thật cho thấy chúng bắt ra những lỗ hổng gì.

Kai··6 min read·AWSCI/CD
19

Kiểm Thử: terraform test, mock_provider, và Terratest

Kiểm thử code Terraform trước khi nó dựng hạ tầng thật. terraform test (GA từ 1.6) với file .tftest.hcl chạy run/assert để kiểm logic, mock_provider (1.7) cho phép test không cần AWS thật. Demo thật ba test pass và một test fail, rồi giới thiệu Terratest cho kiểm thử tích hợp sâu.

Kai··5 min read·DevOpsAWS
20

Capstone: Hạ Tầng Web Đa Tầng Hoàn Chỉnh

Bài cuối ráp mọi thứ của series thành một hạ tầng web hoàn chỉnh: VPC, ALB, Auto Scaling Group chạy nginx, RDS PostgreSQL và S3 — tổ chức thành ba module nối với nhau. Apply thật, truy cập ứng dụng qua ALB, kiểm mật khẩu DB không lọt state, rồi teardown sạch. Khép lại bằng lộ trình học tiếp.

Kai··6 min read·DevOpsAWS