Trong bài viết này, bạn sẽ học cách tạo AWS VPC bằng các module Terraform có cấu trúc rõ ràng. Đây là một hướng dẫn từng bước dành cho người mới bắt đầu với đầy đủ thông tin chi tiết.
Yêu Cầu Trước Khi Thực Hiện
Để làm theo hướng dẫn này, bạn cần có các yêu cầu sau:
- Cài đặt phiên bản Terraform mới nhất và cấu hình trên hệ thống của bạn.
- Cài đặt AWS CLI và cấu hình với tài khoản AWS hợp lệ có đầy đủ quyền để tạo và quản lý dịch vụ AWS VPC.
- Nếu bạn đang chạy Terraform trên một EC2 instance, hãy đảm bảo rằng instance có IAM role hợp lệ với quyền khởi tạo VPC.
Mã Code Terraform AWS VPC
Mã Terraform cho AWS VPC là một phần của repository terraform AWS. Clone về máy của bạn để làm theo hướng dẫn.
git clone https://github.com/techiescamp/terraform-aws.git
Fork và clone repository nếu bạn muốn sử dụng lại hoặc thay đổi theo nhu cầu của mình.
Cấu Trúc Thư Mục Terraform AWS VPC
Mã Terraform VPC được tổ chức theo cấu trúc sau:
├── infra
│ └── vpc
│ ├── main.tf
│ └── variables.tf
├── modules
│ └── vpc
│ ├── endpoint.tf
│ ├── internet-gateway.tf
│ ├── nacl.tf
│ ├── nat-gateway.tf
│ ├── outputs.tf
│ ├── route-tables.tf
│ ├── subnet.tf
│ ├── variables.tf
│ └── vpc.tf
└── vars
└── dev
└── vpc.tfvars
- Thư mục
vars
chứa tệpvpc.tfvars
, đây là tệp duy nhất cần chỉnh sửa. - Thư mục
modules/vpc
chứa tất cả tài nguyên liên quan đến VPC như:- Endpoint
- Internet Gateway
- NACL
- NAT Gateway
- Route Tables
- Subnet
- VPC
- Tệp
infra/vpc/main.tf
gọi modulevpc
và sử dụng các biến từ tệpvpc.tfvars
.
Cấu Hình VPC
VPC sẽ được tạo với cấu hình sau:
- CIDR Block: 10.0.0.0/16
- Khu vực: us-west-2
- Availability Zones: us-west-2a, us-west-2b, us-west-2c
- Subnets: 15 subnet (mỗi AZ một subnet)
- 3 Public Subnets
- 3 App Subnets
- 3 DB Subnets
- 3 Management Subnets
- 3 Platform Subnets
- NAT Gateway cho private subnet
- Internet Gateway cho public subnet
- Endpoint được bật: S3, CloudWatch & Secrets Manager
- NACL chuyên biệt cho từng nhóm subnet
Các Bước Triển Khai AWS VPC Bằng Terraform
Bước 1: Truy Cập Vào Repository Đã Clone
Nếu chưa clone, hãy thực hiện:
git clone https://github.com/techiescamp/terraform-aws.git
Di chuyển vào thư mục:
cd terraform-aws
Bước 2: Chỉnh Sửa Tệp vpc.tfvars
Mở thư mục repository trong IDE yêu thích để dễ dàng chỉnh sửa mã nguồn.
Chỉnh sửa tệp vars/dev/vpc.tfvars
theo nhu cầu của bạn.
Lưu ý: Nếu không muốn sử dụng NAT Gateway, đặt
create_nat_gateway
thànhfalse
.
Bước 3: Khởi Tạo Terraform Và Kiểm Tra Kế Hoạch
Di chuyển vào thư mục infra/vpc:
cd infra/vpc
Khởi tạo Terraform:
terraform init
Chạy Terraform plan để kiểm tra cấu hình:
terraform plan -var-file=../../vars/dev/vpc.tfvars
Bạn sẽ thấy danh sách các tài nguyên sẽ được tạo.
Bước 4: Triển Khai VPC Bằng Terraform Apply
terraform apply -var-file=../../vars/dev/vpc.tfvars
Bước 5: Kiểm Tra VPC Trên AWS Console
Vào AWS Console, chọn VPC vừa tạo và kiểm tra Resource Map.
Bạn sẽ thấy 15 subnet, 6 route tables, internet gateway và NAT gateway được tạo thành công.
Bước 6: Xóa Tài Nguyên Nếu Không Cần Dùng
Nếu bạn chỉ tạo VPC để học tập và muốn dọn dẹp tài nguyên, chạy lệnh sau:
terraform destroy -var-file=../../vars/dev/vpc.tfvars
Tham Khảo Mã Terraform Thực Tế
Nếu muốn tìm hiểu cách viết mã Terraform chuẩn trong môi trường dự án thực tế, hãy tham khảo repository của nền tảng hiện đại hóa thuộc Bộ Tư Pháp Anh.
Tài liệu quyết định kiến trúc:
https://github.com/ministryofjustice/modernisation-platform/tree/main/architecture-decision-record
Kết Luận
Trong hướng dẫn này, chúng ta đã học cách tạo AWS VPC bằng Terraform.
Trong các dự án thực tế, bạn có thể cần xem xét thêm nhiều tùy chọn VPC như Flow Logs, Peering Connections, v.v.
Để quản lý trạng thái Terraform, bạn nên sử dụng remote backend với S3 và DynamoDB Lock.
Hãy tùy chỉnh mã Terraform theo nhu cầu của bạn. Nếu có thắc mắc hoặc gặp lỗi, hãy để lại bình luận bên dưới!
Tài liệu tham khảo How to Create AWS VPC Using Terraform