GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit instanci RDS na AWS pomocí Terraform

V tomto článku uvidíme, jak vytvořit instanci RDS MySql. Než budete pokračovat, předpokládám, že jste obeznámeni se základy Terraform a AWS RDS Service. Pokud se chcete naučit vytvářet instanci RDS MySql z konzoly AWS, vyhledejte „Jak nastavit instanci RDS MySql (Relation Database MySql) na AWS“

Předpoklady

  1. Základní porozumění Terraformu.
  2. Terraform nainstalovaný ve vašem systému.
  3. Účet AWS (vytvořte si jej, pokud jej nemáte).
  4. 'access_key' &'secret_key' uživatele AWS IAM. (Kliknutím sem se dozvíte, jak vytvořit uživatele IAM pomocí 'access_key' a 'secret_key' na AWS, )

 Co uděláme

  1. Zapište konfigurační soubory Terraform pro instanci RDS MySql.
  2. Vytvořte instanci RDS MySql pomocí konfiguračních souborů Terraform.
  3. Smažte vytvořenou instanci RDS MySql pomocí Terraform.

 Zapište konfigurační soubory Terraform pro instanci RDS MySql.

Vytvořte vyhrazený adresář, kde můžete vytvářet konfigurační soubory terraform.

Použijte následující příkaz k vytvoření adresáře a změňte na něj svůj současný pracovní adresář.

mkdir terraform
cd terraform/

Používám "vim" jako editor pro zápis do souborů, můžete použít editor dle svého výběru a zkopírovat a vložit následující konfigurace pro vytvoření variables.tf, terraform. tfvars a main.tf.

 Vytvořte soubor 'main.tf', který je zodpovědný za vytvoření RDS MySql na AWS. Tento main.tf bude číst hodnoty proměnných z variables.tf a 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}"
  }
}

Vytvořte soubor 'variables.tf', který obsahuje deklaraci a definici proměnných.

vim variables.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"
}

Jakmile vytvoříte 'variables.tf', nezapomeňte změnit hodnoty přiřazené proměnným. Musíte změnit zvýrazněné hodnoty, protože jsou specifické pro mé prostředí. Zbývající proměnné můžete ponechat tak, jak jsou.

Vytvořte 'terraform.tfvars', který obsahuje definici proměnných access_key a secret_key definovaných ve výše uvedeném souboru. Uchovali jsme deklaraci těchto 2 proměnných spolu s 'region' v souboru 'terraform.tfvars'. Změňte hodnotu "region", pokud chcete vytvořit instanci v jiné oblasti, než jsem zadal.

Následující klíče je třeba změnit pomocí klíčů vašeho uživatele IAM.

vim terraform.tfvars

region = "eu-west-3"
access_key = "AKIAQ6GAIA5XFLXF6HOV"
secret_key = "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"

Nyní byste měli mít 3 soubory, viz, variables.tf, terraform.tfvars a  main.tf

 Vytvořte instanci RDS MySql pomocí konfiguračních souborů Terraform

Před spuštěním následujících příkazů se ujistěte, že jste nakonfigurovali platný access_key a secret_key.

Prvním příkazem, který se má použít, je 'terraform init'. Tento příkaz stáhne a nainstaluje pluginy pro poskytovatele používané v rámci konfigurace. V našem případě je to AWS.

  terraform init

Druhý příkaz, který se má použít, je 'terraform plan'. Tento příkaz se používá k zobrazení změn, ke kterým dojde v infrastruktuře.

 plán terraform

příkaz 'terraform apply' vytvoří prostředky na AWS uvedené v souboru main.tf. Budete vyzváni k zadání potvrzení pro vytvoření zdrojů.

platí Terraform

Když provedete výše uvedený příkaz, po úspěšném dokončení uvidíte, že byly přidány nové zdroje a 0 bylo zničeno.

Můžete přejít do konzoly AWS RDS a ověřit, zda je instance RDS MySql vytvořena či nikoli.

Odstranit vytvořenou instanci RDS MySql pomocí Terraform

Pokud již nepotřebujete prostředky, které jste vytvořili pomocí konfigurace uvedené v souboru main.tf, můžete všechny tyto prostředky smazat pomocí příkazu "terraform zničit".

ničit terraform

Závěr

V tomto článku jsme viděli kroky k vytvoření instance RDS MySql v oblasti dle našeho výběru. Také jsme viděli, jak lze instanci, kterou jsme vytvořili, odstranit jediným příkazem.


Linux
  1. Vytvořte virtuální privátní cloud (VPC) na AWS pomocí Terraform

  2. Vytvořte instanci EC2 na AWS pomocí Terraform

  3. Jak vytvořit roli IAM v AWS pomocí Terraform

  1. Jak vytvořit a přidat svazek EBS v instanci AWS (EC2)

  2. Jak spustit instanci AWS EC2 pomocí Terraform

  3. Jak vytvořit modul Terraform

  1. Jak vytvořit uživatele v instanci Linux EC2 na AWS a přidat k němu veřejný klíč pomocí skriptu shell

  2. Jak nastavit instanci RDS MySql (Relation Database MySql) na AWS

  3. Jak vytvořit statický web na AWS S3 Bucket