GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un'istanza RDS su AWS utilizzando Terraform

In questo articolo vedremo come creare un'istanza RDS MySql. Prima di procedere, presumo che tu abbia familiarità con le basi di Terraform e del servizio AWS RDS. Se vuoi imparare a creare un'istanza RDS MySql dalla console AWS, cerca "Come configurare un'istanza RDS MySql (Relation Database MySql ) su AWS"

Prerequisiti

  1. Comprensione di base di Terraform.
  2. Terraform installato sul tuo sistema.
  3. Account AWS (crea se non ne hai uno).
  4. 'access_key' &'secret_key' di un utente AWS IAM. (Fai clic qui per imparare a creare un utente IAM con 'access_key' &'secret_key' su AWS, )

 Cosa faremo

  1. Scrivi file di configurazione Terraform per istanza RDS MySql.
  2. Crea un'istanza RDS MySql utilizzando i file di configurazione di Terraform.
  3. Elimina l'istanza RDS MySql creata utilizzando Terraform.

 Scrivi file di configurazione Terraform per istanza RDS MySql.

Crea una directory dedicata in cui puoi creare file di configurazione di terraform.

Usa il seguente comando per creare una directory e cambiarla nella tua attuale directory di lavoro.

mkdir terraform
cd terraforma/

Sto usando "vim" come editor per scrivere nei file, puoi usare un editor a tua scelta e copiare e incollare le seguenti configurazioni per creare variable.tf, terraform. tfvars e main.tf.

 Crea 'main.tf' che è responsabile della creazione di un MySql RDS su AWS. Questo main.tf leggerà i valori delle variabili da variabili.tf e 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}"
  }
}

Crea 'variables.tf' che contiene la dichiarazione e la definizione delle variabili.

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

Una volta creato 'variables.tf', non dimenticare di modificare i valori assegnati alle variabili. È necessario modificare i valori evidenziati poiché sono specifici del mio ambiente. Puoi mantenere le restanti variabili così come sono.

Crea 'terraform.tfvars' che contiene la definizione delle variabili access_key e secret_key definite nel file sopra. Abbiamo mantenuto la dichiarazione di queste 2 variabili insieme a 'region' nel file 'terraform.tfvars'. Modifica il valore di "regione" se desideri creare l'istanza in una regione diversa da quella che ho specificato.

Le seguenti chiavi devono essere modificate con le chiavi del tuo utente IAM.

vim terraform.tfvars

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

Ora dovresti avere 3 file, vale a dire, variabili.tf, terraform.tfvars e main.tf

 Crea un'istanza RDS MySql utilizzando i file di configurazione di Terraform

Prima di eseguire i seguenti comandi, assicurati di aver configurato la chiave di accesso e la chiave segreta valide.

Il primo comando da usare è 'terraform init'. Questo comando scarica e installa i plug-in per i provider utilizzati nella configurazione. Nel nostro caso è AWS.

  inizializzazione della piattaforma

Il secondo comando da usare è 'terraform plan'. Questo comando viene utilizzato per vedere le modifiche che avverranno sull'infrastruttura.

 piano della piattaforma

Il comando 'terraform apply' creerà le risorse su AWS menzionate nel file main.tf. Ti verrà chiesto di fornire il tuo input di conferma per creare le risorse.

Applicazione della piattaforma

Quando esegui il comando precedente, al completamento con successo, puoi vedere che sono state aggiunte nuove risorse e 0 è stato distrutto.

Puoi accedere alla console AWS RDS per verificare se l'istanza RDS MySql è stata creata o meno.

Elimina l'istanza RDS MySql creata utilizzando Terraform

Se non hai più bisogno delle risorse che hai creato usando la configurazione menzionata nel file main.tf, puoi usare il comando "terraform destroy" per eliminare tutte quelle risorse.

Distruggi Terraform

Conclusione

In questo articolo, abbiamo visto i passaggi per creare un'istanza RDS MySql nella regione di nostra scelta. Abbiamo anche visto come l'istanza che abbiamo creato può essere eliminata con un solo comando.


Linux
  1. Come creare e aggiungere un volume EBS nell'istanza AWS (EC2)

  2. Come avviare un'istanza AWS EC2 utilizzando Terraform

  3. Crea un Virtual Private Cloud (VPC) su AWS utilizzando Terraform

  4. Crea un'istanza EC2 su AWS utilizzando Terraform

  5. Come creare un ruolo IAM in AWS utilizzando Terraform

Come creare un'istanza Amazon AWS EC2 utilizzando Python Boto3

Come creare un'istanza RDS utilizzando Python Boto3 su AWS

Come creare un bucket S3 utilizzando Python Boto3 su AWS

Come creare una tabella DynamoDB in AWS

Come creare un'istanza EC2 Ubuntu su AWS

Come avviare un'istanza OpenStack utilizzando Horizon Dashboard