Dalam artikel ini, kita akan melihat cara membuat Instance MySql RDS. Sebelum melanjutkan, saya berasumsi bahwa Anda sudah familiar dengan dasar-dasar Terraform dan AWS RDS Service. Jika Anda ingin belajar membuat instans RDS MySql dari konsol AWS, cari "Cara menyiapkan instans RDS MySql (Relation Database MySql ) di AWS"
Prasyarat
- Pemahaman dasar tentang Terraform.
- Terraform terpasang di sistem Anda.
- Akun AWS (Buat jika Anda belum memilikinya).
- 'access_key' &'secret_key' dari Pengguna AWS IAM. (Klik di sini untuk belajar membuat pengguna IAM dengan 'access_key' &'secret_key' di AWS, )
Apa yang akan kami lakukan
- Tulis file konfigurasi Terraform untuk Instance MySql RDS.
- Buat Instance MySql RDS menggunakan file konfigurasi Terraform.
- Hapus Instance MySql RDS yang dibuat menggunakan Terraform.
Tulis file konfigurasi Terraform untuk Instans MySql RDS.
Buat direktori khusus tempat Anda dapat membuat file konfigurasi terraform.
Gunakan perintah berikut untuk membuat direktori dan mengubah direktori kerja Anda saat ini ke direktori tersebut.
mkdir terraform
cd terraform/
Saya menggunakan "vim" sebagai editor untuk menulis dalam file, Anda dapat menggunakan editor pilihan Anda dan salin-tempel konfigurasi berikut untuk membuat variabel.tf, terraform. tfvars dan main.tf.
Buat 'main.tf' yang bertanggung jawab untuk membuat RDS MySql di AWS. Main.tf ini akan membaca nilai variabel dari variabel.tf dan terraform.tfvars.
vim main.tf
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" } resource "aws_db_subnet_group" "default" { name = "main_subnet_group" description = "Our main group of subnets" subnet_ids = ["${aws_subnet.subnet_1.id}", "${aws_subnet.subnet_2.id}"] } resource "aws_subnet" "subnet_1" { vpc_id = "${var.vpc_id}" cidr_block = "${var.subnet_1_cidr}" availability_zone = "${var.az_1}" tags = { Name = "main_subnet1" } } resource "aws_subnet" "subnet_2" { vpc_id = "${var.vpc_id}" cidr_block = "${var.subnet_2_cidr}" availability_zone = "${var.az_2}" tags = { Name = "main_subnet2" } } resource "aws_security_group" "default" { name = "main_rds_sg" description = "Allow all inbound traffic" 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}" } }
Buat 'variables.tf' yang berisi deklarasi dan definisi variabel.
variabel vim.tf
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "region" { description = "Region of AWS VPC" } variable "identifier" { default = "mydb-rds" description = "Identifier for your DB" } variable "storage" { default = "10" description = "Storage size in GB" } variable "engine" { default = "mysql" description = "Engine type, here it is mysql" } variable "engine_version" { description = "Engine version" default = { mysql = "5.7.21" } } variable "instance_class" { default = "db.t2.micro" description = "Instance class" } variable "db_name" { default = "myfirstdb" description = "db name" } variable "username" { default = "rahul" description = "User name" } variable "password" { description = "password, provide through your ENV variables" default = "rahul1234" } variable "subnet_1_cidr" { default = "172.31.48.0/20" description = "Your AZ" } variable "subnet_2_cidr" { default = "172.31.64.0/20" description = "Your AZ" } variable "az_1" { default = "eu-west-3c" description = "Your Az1, use AWS CLI to find your account specific" } variable "az_2" { default = "eu-west-3a" description = "Your Az2, use AWS CLI to find your account specific" } variable "vpc_id" { description = "Your VPC ID" default = "vpc-be1010d7" } variable "cidr_blocks" { default = "0.0.0.0/0" description = "CIDR for sg" } variable "sg_name" { default = "my-rds-sg" description = "Tag Name for sg" }
Setelah Anda membuat 'variables.tf', jangan lupa untuk mengubah nilai yang ditetapkan ke variabel. Anda harus mengubah nilai yang disorot karena ini khusus untuk lingkungan saya. Anda dapat menyimpan variabel lainnya apa adanya.
Buat 'terraform.tfvars' yang berisi definisi variabel access_key dan secret_key yang didefinisikan dalam file di atas. Kami telah menyimpan deklarasi dari 2 variabel ini bersama dengan 'region' di file 'terraform.tfvars'. Ubah nilai "region" jika Anda ingin membuat instance di region selain yang telah saya tentukan.
Kunci berikut perlu diubah dengan kunci pengguna IAM Anda.
vim terraform.tfvars
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
Sekarang, Anda seharusnya memiliki 3 file, yaitu, variabel.tf, terraform.tfvars dan main.tf
Buat Instance MySql RDS menggunakan file konfigurasi Terraform
Sebelum Anda menjalankan perintah berikut, pastikan Anda telah mengonfigurasi access_key dan secret_key yang valid.
Perintah pertama yang digunakan adalah 'terraform init'. Perintah ini mengunduh dan menginstal plugin untuk penyedia yang digunakan dalam konfigurasi. Dalam kasus kami ini adalah AWS.
init terraform
Perintah kedua yang digunakan adalah 'terraform plan'. Perintah ini digunakan untuk melihat perubahan yang akan terjadi pada infrastruktur.
rencana terraform
Perintah 'terraform apply' akan membuat sumber daya pada AWS yang disebutkan dalam file main.tf. Anda akan diminta untuk memberikan masukan konfirmasi untuk membuat sumber daya.
terraform berlaku
Saat Anda menjalankan perintah di atas, setelah berhasil diselesaikan, Anda dapat melihat bahwa sumber daya baru telah ditambahkan dan 0 telah dihancurkan.
Anda dapat membuka konsol AWS RDS untuk memverifikasi apakah instance RDS MySql dibuat atau tidak.
Hapus Instance MySql RDS yang dibuat menggunakan Terraform
Jika Anda tidak lagi memerlukan sumber daya yang Anda buat menggunakan konfigurasi yang disebutkan dalam file main.tf, Anda dapat menggunakan perintah "terraform destroy" untuk menghapus semua sumber daya tersebut.
hancurkan terraform
Kesimpulan
Dalam artikel ini, kami melihat langkah-langkah untuk membuat instance RDS MySql di wilayah pilihan kami. Kami juga melihat bagaimana instance yang kami buat dapat dihapus hanya dalam satu perintah.