GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie eine RDS-Instance auf AWS mit Terraform

In diesem Artikel erfahren Sie, wie Sie eine RDS-MySql-Instanz erstellen. Bevor ich fortfahre, gehe ich davon aus, dass Sie mit den Grundlagen von Terraform und AWS RDS Service vertraut sind. Wenn Sie erfahren möchten, wie Sie eine RDS MySql-Instance über die AWS-Konsole erstellen, suchen Sie nach „How to setup an RDS MySql (Relation Database MySql ) instance on AWS“

Voraussetzungen

  1. Grundlegendes Verständnis von Terraform.
  2. Terraform auf Ihrem System installiert.
  3. AWS-Konto (erstellen, falls Sie noch keins haben).
  4. 'access_key' &'secret_key' eines AWS IAM-Benutzers. (Klicken Sie hier, um zu erfahren, wie Sie einen IAM-Benutzer mit „access_key“ und „secret_key“ auf AWS erstellen, )

 Was wir tun werden

  1. Schreiben Sie Terraform-Konfigurationsdateien für RDS MySql-Instanz.
  2. Erstellen Sie mithilfe der Terraform-Konfigurationsdateien eine RDS-MySql-Instanz.
  3. Löschen Sie die erstellte RDS MySql-Instanz mit Terraform.

 Terraform-Konfigurationsdateien für RDS MySql-Instanz schreiben.

Erstellen Sie ein dediziertes Verzeichnis, in dem Sie Terraform-Konfigurationsdateien erstellen können.

Verwenden Sie den folgenden Befehl, um ein Verzeichnis zu erstellen und Ihr aktuelles Arbeitsverzeichnis dorthin zu ändern.

mkdir-terraform
cd terraform/

Ich verwende "vim" als Editor, um in Dateien zu schreiben, Sie können einen Editor Ihrer Wahl verwenden und die folgenden Konfigurationen kopieren und einfügen, um variables.tf, Terraform zu erstellen. tfvars und main.tf.

 Erstellen Sie „main.tf“, das für die Erstellung eines RDS MySql auf AWS verantwortlich ist. Diese main.tf liest Werte von Variablen aus variables.tf und 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}"
  }
}

Erstellen Sie 'variables.tf', das die Deklaration und Definition der Variablen enthält.

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

Vergessen Sie nach dem Erstellen von 'variables.tf' nicht, die den Variablen zugewiesenen Werte zu ändern. Sie müssen die hervorgehobenen Werte ändern, da diese für meine Umgebung spezifisch sind. Die restlichen Variablen können Sie unverändert lassen.

Erstellen Sie „terraform.tfvars“, die die Definition der access_key- und secret_key-Variablen enthält, die in der obigen Datei definiert sind. Wir haben die Deklaration dieser 2 Variablen zusammen mit „region“ in der Datei „terraform.tfvars“ beibehalten. Ändern Sie den Wert von "Region", wenn Sie die Instanz in einer anderen als der von mir angegebenen Region erstellen möchten.

Die folgenden Schlüssel müssen mit den Schlüsseln Ihres IAM-Benutzers geändert werden.

vim terraform.tfvars

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

Jetzt sollten Sie 3 Dateien haben, nämlich variables.tf, terraform.tfvars und  main.tf

 Erstellen Sie eine RDS-MySql-Instanz mithilfe der Terraform-Konfigurationsdateien

Bevor Sie die folgenden Befehle ausführen, vergewissern Sie sich, dass Sie den gültigen access_key und secret_key konfiguriert haben.

Der erste zu verwendende Befehl ist 'terraform init'. Dieser Befehl lädt Plugins für Anbieter, die in der Konfiguration verwendet werden, herunter und installiert sie. In unserem Fall ist es AWS.

  terraform init

Der zweite zu verwendende Befehl ist 'terraform plan'. Dieser Befehl wird verwendet, um die Änderungen anzuzeigen, die an der Infrastruktur stattfinden werden.

 Terraformplan

Der Befehl „terraform apply“ erstellt die in der main.tf-Datei erwähnten Ressourcen auf der AWS. Sie werden aufgefordert, Ihre Bestätigungseingabe zum Erstellen der Ressourcen zu machen.

Terraform anwenden

Wenn Sie den obigen Befehl ausführen, können Sie nach erfolgreichem Abschluss sehen, dass neue Ressourcen hinzugefügt und 0 zerstört wurden.

Sie können zur AWS-RDS-Konsole gehen, um zu überprüfen, ob die RDS-MySql-Instanz erstellt wurde oder nicht.

Löschen Sie die erstellte RDS MySql-Instanz mit Terraform

Wenn Sie Ressourcen, die Sie mit der in der main.tf-Datei erwähnten Konfiguration erstellt haben, nicht mehr benötigen, können Sie den Befehl "Terraform Destroy" verwenden, um alle diese Ressourcen zu löschen.

Terraform zerstören

Schlussfolgerung

In diesem Artikel haben wir die Schritte zum Erstellen einer RDS-MySql-Instanz in der Region unserer Wahl gesehen. Wir haben auch gesehen, wie die von uns erstellte Instanz mit nur einem Befehl gelöscht werden kann.


Linux
  1. So erstellen und fügen Sie ein EBS-Volume in einer AWS-Instanz (EC2) hinzu

  2. So starten Sie eine AWS EC2-Instanz mit Terraform

  3. Erstellen Sie mit Terraform eine Virtual Private Cloud (VPC) auf AWS

  4. Erstellen Sie mit Terraform eine EC2-Instance auf AWS

  5. So erstellen Sie eine IAM-Rolle in AWS mit Terraform

So erstellen Sie eine Amazon AWS EC2-Instanz mit Python Boto3

So erstellen Sie eine RDS-Instanz mit Python Boto3 auf AWS

So erstellen Sie einen S3-Bucket mit Python Boto3 auf AWS

So erstellen Sie eine DynamoDB-Tabelle in AWS

So erstellen Sie eine Ubuntu EC2-Instance auf AWS

So starten Sie eine OpenStack-Instanz mit Horizon Dashboard