Cómo crear una instancia RDS en AWS usando Terraform

Cómo crear una instancia RDS en AWS usando Terraform

En este art√≠culo, veremos c√≥mo crear una instancia RDS MySql. Antes de continuar, asumo que est√° familiarizado con los conceptos b√°sicos de Terraform y AWS RDS Service. Si desea aprender a crear una instancia RDS MySql desde la consola de AWS, busque ¬ęC√≥mo configurar una instancia RDS MySql (Relation Database MySql) en AWS¬Ľ

requisitos previos

  1. Comprensión básica de Terraform.
  2. Terraform instalado en su sistema.
  3. Cuenta AWS (Crear si no tienes uno).
  4. ‘access_key’ y ‘secret_key’ de un usuario de AWS IAM. (Haga clic aqu√≠ para obtener informaci√≥n sobre c√≥mo crear un usuario de IAM con ‘access_key’ y ‘secret_key’ en AWS)

Lo que haremos

  1. Escriba archivos de configuración de Terraform para la instancia RDS MySql.
  2. Cree una instancia RDS MySql utilizando los archivos de configuración de Terraform.
  3. Elimine la instancia RDS MySql creada usando Terraform.

Escriba archivos de configuración de Terraform para la instancia RDS MySql.

Cree un directorio dedicado donde pueda crear archivos de configuración de terraformación.

Use el siguiente comando para crear un directorio y cambiar su directorio de trabajo actual a él.

mkdir terraformar
cd terraform/

Estoy usando ¬ęvim¬Ľ como editor para escribir en archivos, puede usar un editor de su elecci√≥n y copiar y pegar las siguientes configuraciones para crear variables.tf, terraform.tfvars y main.tf.

Cree ‘main.tf’ que es responsable de crear un RDS MySql en AWS. Este main.tf leer√° valores de variables de variables.tf y terraform.tfvars.

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

Cree ‘variables.tf’ que contiene la declaraci√≥n y definici√≥n de las variables.

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"
}

Una vez que haya creado ‘variables.tf’, no olvide cambiar los valores asignados a las variables. Debe cambiar los valores resaltados ya que son espec√≠ficos de mi entorno. Puede mantener el resto de variables como est√°n.

Cree ‘terraform.tfvars’ que contiene la definici√≥n de las variables access_key y secret_key definidas en el archivo anterior. Hemos mantenido la declaraci√≥n de estas 2 variables junto con ‘regi√≥n’ en el archivo ‘terraform.tfvars’. Cambie el valor de ¬ęregi√≥n¬Ľ si desea crear la instancia en una regi√≥n diferente a la que he especificado.

Las siguientes claves deben cambiarse con las claves de su usuario de IAM.

vim terraform.tfvars

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

Ahora, debe tener 3 archivos, a saber, variables.tf, terraform.tfvars y main.tf

Cree una instancia RDS MySql utilizando los archivos de configuración de Terraform

Antes de ejecutar los siguientes comandos, aseg√ļrese de haber configurado access_key y secret_key v√°lidos.

El primer comando que se utilizar√° es ‘terraform init’. Este comando descarga e instala complementos para proveedores utilizados dentro de la configuraci√≥n. En nuestro caso es AWS.

inicio de terraformación

El segundo comando que se utilizar√° es ‘plan de terraformaci√≥n’. Este comando se utiliza para ver los cambios que se producir√°n en la infraestructura.

plan de terraformación

El comando ‘terraform apply’ crear√° los recursos en AWS mencionados en el archivo main.tf. Se le pedir√° que proporcione su entrada de confirmaci√≥n para crear los recursos.

Aplicar terraformación

Cuando ejecuta el comando anterior, al completarlo con éxito, puede ver que se agregaron nuevos recursos y 0 se destruyó.

Puede ir a la consola de AWS RDS para verificar si la instancia RDS MySql est√° creada o no.

Elimine la instancia RDS MySql creada usando Terraform

Si ya no necesita los recursos que cre√≥ usando la configuraci√≥n mencionada en el archivo main.tf, puede usar el comando ¬ęterraform destroy¬Ľ para eliminar todos esos recursos.

terraformar destruir

Conclusión

En este artículo, vimos los pasos para crear una instancia RDS MySql en la región de nuestra elección. También vimos cómo la instancia que creamos se puede eliminar con un solo comando.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *