Tổng quan.
Đây là ví dụ định nghĩa backend của Terraform, được cấu hình để sử dụng S3 bucket của AWS làm nơi lưu trữ state file (terraform.tfstate) của môi trường hạ tầng do Terraform quản lý. Ví dụ này sử dụng Terraform AWS Provider để tương tác với nhiều tài nguyên được hỗ trợ bởi AWS thông qua các API của nó và ví dụ này triển khai trên Terraform phiên bản 0.10.x.
Cấu hình các khóa truy cập AWS của bạn.
Vì lý do bảo mật, nên sử dụng người dùng IAM thay vì tài khoản gốc để truy cập vào AWS.
Cấu hình thông tin xác thực AWS để sử dụng bởi Terraform có thể được thực hiện theo nhiều cách khác nhau, nhưng đây là những cách tiếp cận được khuyến khích:
Cách 1: Cài đặt thông tin xác thực AWS trên hệ thống local của bạn, đối với Linux, macOS hoặc Unix:
~/.aws/credentials
Hoặc đối với Windows nằm tại.
C:\Users\USERNAME\.aws\credentials
File này nên chứa các dòng theo định dạng dưới, lưu ý hãy thay thế các giá trị thông tin xác thực AWS của bạn vào các giá trị <your_access_key_id> và <your_secret_access_key> trong file.
[default]
aws_access_key_id = <your_access_key_id>
aws_secret_access_key = <your_secret_access_key>
Cách 2: Đặt các biến môi trường AWS_ACCESS_KEY_ID và AWS_SECRET_ACCESS_KEY.
Để đặt các biến này trên Linux, macOS hoặc Unix, sử dụng lệnh export:
export AWS_ACCESS_KEY_ID=<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
Đối với windows hãy sử dụng set:
set AWS_ACCESS_KEY_ID=<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
Tạo file Terraform.
Đoạn code dưới định nghĩa backend của Terraform, được cấu hình để sử dụng S3 bucket của AWS làm nơi lưu trữ state file (terraform.tfstate) của môi trường hạ tầng do Terraform quản lý.
Cụ thể, đoạn code có các thành phần như sau:
- Đoạn code đầu tiên khai báo AWS provider và chỉ định khu vực được sử dụng là “eu-west-1”.
- Đoạn code tiếp theo định nghĩa backend của Terraform, sử dụng loại backend là “s3” và chỉ định các thông tin cấu hình như:
- Bucket: là tên của S3 bucket được sử dụng để lưu trữ state file.
- Key: là đường dẫn tới state file trên S3 bucket. Trong ví dụ này, state file được lưu trữ trong thư mục “terraform-state” và có tên là “terraform.tfstate”.
- Region: là khu vực của S3 bucket.
Khi đoạn code này được sử dụng, Terraform sẽ tự động tạo ra state file trong S3 bucket đã cấu hình. State file này sẽ chứa các thông tin về tài nguyên hạ tầng được quản lý bởi Terraform, và được sử dụng để giữ cho trạng thái của hạ tầng được đồng bộ hóa đúng với mã nguồn Terraform.
Đầu tiên chúng ta tạo file main.tf
# Configure the AWS provider
provider "aws" {
region = "eu-west-1"
}
File backend.tf
# Define Terraform backend using a S3 bucket for storing the Terraform state
terraform {
backend "s3" {
bucket = "terraform-state-my-bucket"
key = "terraform-state/terraform.tfstate"
region = "eu-west-1"
}
}
Nếu bạn đã thiết lập backend S3 trong file cấu hình Terraform (backend "s3" { ... }
), Terraform sẽ tự động lưu trạng thái của các tài nguyên của bạn vào file terraform.tfstate
trong bucket S3 được chỉ định, ngay cả khi bạn triển khai Terraform từ máy tính cá nhân của mình.
Chi phí triển khai
Nếu bạn sử dụng backend S3 để lưu trữ trạng thái của Terraform, bạn sẽ cần trả phí cho các dịch vụ của AWS mà bạn sử dụng, bao gồm cả S3. Các khoản phí này phụ thuộc vào loại dịch vụ mà bạn sử dụng, cấu hình của bạn, số lượng tài nguyên và thời gian sử dụng của chúng. Bạn có thể xem các bảng giá của AWS để tính toán chi phí dự kiến cho việc sử dụng các dịch vụ của họ.