Cách tạo phiên bản RDS trên AWS bằng Terraform

theanh

Administrator
Nhân viên
Trong bài viết này, chúng ta sẽ xem cách tạo RDS MySql Instance. Trước khi tiếp tục, tôi cho rằng bạn đã quen thuộc với những điều cơ bản của Terraform và AWS RDS Service. Nếu bạn muốn tìm hiểu cách tạo phiên bản RDS MySql từ bảng điều khiển AWS, hãy tìm kiếm "Cách thiết lập phiên bản RDS MySql (Cơ sở dữ liệu quan hệ MySql) trên AWS"

Điều kiện tiên quyết​

  1. Hiểu biết cơ bản về Terraform.
  2. Terraform được cài đặt trên hệ thống của bạn.
  3. Tài khoản AWS (Tạo nếu bạn chưa có một).
  4. 'access_key' & 'secret_key' của Người dùng AWS IAM. (Nhấp vào đây để tìm hiểu cách tạo người dùng IAM với 'access_key' và 'secret_key' trên AWS, )

Chúng ta sẽ làm gì

  1. Viết các tệp cấu hình Terraform cho RDS MySql Instance.
  2. Tạo RDS MySql Instance bằng các tệp cấu hình Terraform.
  3. Xóa RDS MySqlInstance đã tạo bằng Terraform.

Viết các tệp cấu hình Terraform cho RDS MySql Instance.​

Tạo một thư mục chuyên dụng nơi bạn có thể tạo các tệp cấu hình Terraform.

Sử dụng lệnh sau để tạo một thư mục và thay đổi thư mục làm việc hiện tại của bạn thành thư mục đó.

mkdir terraformcd terraform/

Tôi đang sử dụng "vim" làm trình soạn thảo để viết trong các tệp, bạn có thể sử dụng trình soạn thảo tùy chọn của mình và sao chép-dán các cấu hình sau để tạo các biến.tf, terraform.tfvars và main.tf.

Tạo 'main.tf' chịu trách nhiệm tạo RDS MySql trên AWS. main.tf này sẽ đọc các giá trị của biến từ variables.tf và terraform.tfvars.

vim main.tf
Mã:
provider "aws" { region = "${var.region}" access_key = "${var.access_key}" secret_key = "${var.secret_key}"}resource "aws_db_instance" "default" { depends_on = ["aws_security_group.default"] identifier = "${var.identifier}" allocated_storage = "${var.storage}" engine = "${var.engine}" engine_version = "${lookup(var.engine_version, var.engine)}" instance_class = "${var.instance_class}" name = "${var.db_name}" username = "${var.username}" password = "${var.password}" vpc_security_group_ids = ["${aws_security_group.default.id}"] db_subnet_group_name = "${aws_db_subnet_group.default.id}" skip_final_snapshot = "true"}tài nguyên "aws_db_subnet_group" "default" { name = "main_subnet_group" description = "Nhóm mạng con chính của chúng tôi" subnet_ids = ["${aws_subnet.subnet_1.id}", "${aws_subnet.subnet_2.id}"]}tài nguyên "aws_subnet" "subnet_1" { vpc_id = "${var.vpc_id}" cidr_block = "${var.subnet_1_cidr}" availability_zone = "${var.az_1}" tags = { Name = "main_subnet1" }}tài nguyên "aws_subnet" "subnet_2" { vpc_id = "${var.vpc_id}" cidr_block = "${var.subnet_2_cidr}" availability_zone = "${var.az_2}" tags = { Name = "main_subnet2" }}tài nguyên "aws_security_group" "default" { name = "main_rds_sg" description = "Cho phép tất cả lưu lượng truy cập đến" vpc_id = "${var.vpc_id}" ingress { from_port = 0 to_port = 65535 protocol = "TCP" cidr_blocks = ["${var.cidr_blocks}"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } tags = { Name = "${var.sg_name}" }}
Tạo 'variables.tf' chứa khai báo và định nghĩa của các biến.

vim variables.tf
Mã:
biến "access_key" { mô tả = "Khóa truy cập vào bảng điều khiển AWS"}biến "secret_key" { mô tả = "Khóa bí mật vào bảng điều khiển AWS"}biến "region" { mô tả = "Khu vực AWS VPC"}biến "identifier" { mặc định = "mydb-rds" mô tả = "Mã định danh cho DB của bạn"}biến "storage" { mặc định = "10" mô tả = "Kích thước lưu trữ tính bằng GB"}biến "engine" { mặc định = "mysql" mô tả = "Loại công cụ, ở đây là mysql"}biến "engine_version" { mô tả = "Phiên bản công cụ" mặc định = { mysql = "5.7.21" }}biến "instance_class" { mặc định = "db.t2.micro" mô tả = "Lớp phiên bản"}biến "db_name" { mặc định = "myfirstdb" mô tả = "tên db"}biến "username" { mặc định = "rahul" description = "Tên người dùng"}biến "password" { description = "mật khẩu, cung cấp thông qua các biến ENV của bạn" default = "rahul1234"}biến "subnet_1_cidr" { default = "172.31.48.0/20" description = "AZ của bạn"}biến "subnet_2_cidr" { default = "172.31.64.0/20" description = "AZ của bạn"}biến "az_1" { default = "eu-west-3c" description = "Az1 của bạn, hãy sử dụng AWS CLI để tìm tài khoản cụ thể của bạn"}biến "az_2" { default = "eu-west-3a" description = "AZ của bạn Az2, sử dụng AWS CLI để tìm tài khoản cụ thể của bạn"}biến "vpc_id" { description = "ID VPC của bạn" default = "vpc-be1010d7"}biến "cidr_blocks" { default = "0.0.0.0/0" description = "CIDR cho sg"}biến "sg_name" { default = "my-rds-sg" description = "Tên thẻ cho sg"}
Sau khi tạo 'variables.tf', đừng quên thay đổi các giá trị được gán cho các biến. Bạn phải thay đổi các giá trị được tô sáng vì chúng dành riêng cho môi trường của tôi. Bạn có thể giữ nguyên các biến còn lại.

Tạo 'terraform.tfvars' chứa định nghĩa của các biến access_key và secret_key được xác định trong tệp ở trên. Chúng tôi đã giữ nguyên khai báo của 2 biến này cùng với 'region' trong tệp 'terraform.tfvars'. Hãy thay đổi giá trị của "region" nếu bạn muốn tạo phiên bản trong một vùng khác với vùng tôi đã chỉ định.

Cần thay đổi các khóa sau bằng các khóa của người dùng IAM của bạn.

vim terraform.tfvars
Mã:
region = "eu-west-3"access_key = "AKIAQ6GAIA5XFLXF6HOV"secret_key = "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"
Bây giờ, bạn sẽ có 3 tệp, tức là variables.tf, terraform.tfvars và main.tf

Tạo một RDS MySqlInstance bằng các tệp cấu hình Terraform

Trước khi thực hiện các lệnh sau, hãy đảm bảo rằng bạn đã định cấu hình access_key và secret_key hợp lệ.

Lệnh đầu tiên được sử dụng là 'terraform init'. Lệnh này tải xuống và cài đặt các plugin cho các nhà cung cấp được sử dụng trong cấu hình. Trong trường hợp của chúng tôi, đó là AWS.

terraform init

Lệnh thứ hai được sử dụng là 'terraform plan'. Lệnh này được sử dụng để xem những thay đổi sẽ diễn ra trên cơ sở hạ tầng.

terraform plan

Lệnh 'terraform apply' sẽ tạo các tài nguyên trên AWS được đề cập trong tệp main.tf. Bạn sẽ được nhắc cung cấp thông tin xác nhận để tạo tài nguyên.

terraform apply

Khi bạn thực thi lệnh trên, sau khi hoàn tất thành công, bạn có thể thấy rằng các tài nguyên mới đã được thêm vào và 0 đã bị hủy.

Bạn có thể vào bảng điều khiển AWSRDS để xác minh xem RDS MySqlinstance đã được tạo hay chưa.

Xóa RDS MySql Instance đã tạo bằng Terraform​

Nếu bạn không còn cần đến các tài nguyên đã tạo bằng cấu hình được đề cập trong tệp main.tf, bạn có thể sử dụng lệnh "terraform destroy" để xóa tất cả các tài nguyên đó.

terraform destroy

Kết luận​

Trong bài viết này, chúng ta đã thấy các bước để tạo một phiên bản RDS MySql trong vùng mà chúng ta lựa chọn. Chúng ta cũng đã thấy cách có thể xóa phiên bản mà chúng ta đã tạo chỉ bằng một lệnh.
 
Back
Bên trên