GNU/Linux >> Tutoriales Linux >  >> Linux

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 de AWS (cree si no tiene una).
  4. 'access_key' &'secret_key' de un usuario de AWS IAM. (Haga clic aquí para aprender a crear un usuario de IAM con 'access_key' y 'secret_key' en AWS)

 Qué haremos

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

 Escribe archivos de configuración de Terraform para RDS MySql Instance.

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 terraform
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, debería tener 3 archivos, a saber, variables.tf, terraform.tfvars y  main.tf

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

Antes de ejecutar los siguientes comandos, asegúrese de haber configurado la clave_acceso y la clave_secreta válidas.

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 'terraform plan'. 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ó.

Puedes ir a la consola de AWS RDS para verificar si la instancia de RDS MySql está creada o no.

Eliminar 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.


Linux
  1. Cómo crear y agregar un volumen de EBS en una instancia de AWS (EC2)

  2. Cómo lanzar una instancia AWS EC2 usando Terraform

  3. Cree una nube privada virtual (VPC) en AWS con Terraform

  4. Cree una instancia EC2 en AWS usando Terraform

  5. Cómo crear un rol de IAM en AWS usando Terraform

Cómo crear una instancia Amazon AWS EC2 usando Python Boto3

Cómo crear una instancia RDS usando Python Boto3 en AWS

Cómo crear un depósito S3 usando Python Boto3 en AWS

Cómo crear una tabla de DynamoDB en AWS

Cómo crear una instancia Ubuntu EC2 en AWS

Cómo lanzar una instancia de OpenStack mediante Horizon Dashboard