GNU/Linux >> Belajar Linux >  >> Linux

Cara membuat instans RDS di AWS menggunakan Terraform

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

  1. Pemahaman dasar tentang Terraform.
  2. Terraform terpasang di sistem Anda.
  3. Akun AWS (Buat jika Anda belum memilikinya).
  4. '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

  1. Tulis file konfigurasi Terraform untuk Instance MySql RDS.
  2. Buat Instance MySql RDS menggunakan file konfigurasi Terraform.
  3. 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.


Linux
  1. Buat Virtual Private Cloud (VPC) di AWS menggunakan Terraform

  2. Buat instans EC2 di AWS menggunakan Terraform

  3. Cara membuat Peran IAM di AWS menggunakan Terraform

  1. Cara Membuat dan Menambahkan Volume EBS di AWS Instance (EC2)

  2. Cara Meluncurkan Instans AWS EC2 Menggunakan Terraform

  3. Cara membuat modul Terraform

  1. Cara membuat pengguna di instance Linux EC2 di AWS dan menambahkan kunci publik ke dalamnya menggunakan skrip shell

  2. Cara menyiapkan instans RDS MySql (Relation Database MySql) di AWS

  3. Cara Membuat Situs Web Statis di Bucket AWS S3