GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer une instance RDS sur AWS à l'aide de Terraform

Dans cet article, nous verrons comment créer une instance RDS MySql. Avant de continuer, je suppose que vous connaissez les bases de Terraform et du service AWS RDS. Si vous souhaitez apprendre à créer une instance RDS MySql à partir de la console AWS, recherchez "Comment configurer une instance RDS MySql (Relation Database MySql) sur AWS"

Prérequis

  1. Compréhension de base de Terraform.
  2. Terraform installé sur votre système.
  3. Compte AWS (créez-le si vous n'en avez pas).
  4. 'access_key' &'secret_key' d'un utilisateur AWS IAM. (Cliquez ici pour apprendre à créer un utilisateur IAM avec 'access_key' &'secret_key' sur AWS, )

 Ce que nous allons faire

  1. Écrire des fichiers de configuration Terraform pour l'instance MySql RDS.
  2. Créez une instance RDS MySql à l'aide des fichiers de configuration Terraform.
  3. Supprimez l'instance RDS MySql créée à l'aide de Terraform.

 Écrire les fichiers de configuration Terraform pour l'instance RDS MySql.

Créez un répertoire dédié dans lequel vous pouvez créer des fichiers de configuration terraform.

Utilisez la commande suivante pour créer un répertoire et y modifier votre répertoire de travail actuel.

mkdir terraform
cd terraform/

J'utilise "vim" comme éditeur pour écrire dans des fichiers, vous pouvez utiliser un éditeur de votre choix et copier-coller les configurations suivantes pour créer variables.tf, terraform. tfvars et main.tf.

 Créez 'main.tf' qui est chargé de créer un RDS MySql sur AWS. Ce main.tf lira les valeurs des variables de variables.tf et 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}"
  }
}

Créer 'variables.tf' qui contient la déclaration et la définition des variables.

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

Une fois que vous avez créé 'variables.tf', n'oubliez pas de modifier les valeurs attribuées aux variables. Vous devez modifier les valeurs mises en surbrillance car elles sont spécifiques à mon environnement. Vous pouvez conserver les autres variables telles quelles.

Créez 'terraform.tfvars' qui contient la définition des variables access_key et secret_key définies dans le fichier ci-dessus. Nous avons conservé la déclaration de ces 2 variables avec 'region' dans le fichier 'terraform.tfvars'. Modifiez la valeur de "région" si vous souhaitez créer l'instance dans une région autre que celle que j'ai spécifiée.

Les clés suivantes doivent être modifiées avec les clés de votre utilisateur IAM.

vim terraform.tfvars

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

Maintenant, vous devriez avoir 3 fichiers, à savoir, variables.tf, terraform.tfvars et main.tf

 Créer une instance RDS MySql à l'aide des fichiers de configuration Terraform

Avant d'exécuter les commandes suivantes, assurez-vous d'avoir configuré la clé d'accès et la clé secrète valides.

La première commande à utiliser est 'terraform init'. Cette commande télécharge et installe les plug-ins pour les fournisseurs utilisés dans la configuration. Dans notre cas, il s'agit d'AWS.

  terraform init

La deuxième commande à utiliser est 'terraform plan'. Cette commande permet de voir les changements qui auront lieu sur l'infrastructure.

 plan de terraformation

La commande 'terraform apply' créera les ressources sur l'AWS mentionnées dans le fichier main.tf. Vous serez invité à fournir votre entrée de confirmation pour créer les ressources.

appliquer terraform

Lorsque vous exécutez la commande ci-dessus, une fois l'exécution réussie, vous pouvez voir que de nouvelles ressources ont été ajoutées et 0 a été détruite.

Vous pouvez accéder à la console AWS RDS pour vérifier si l'instance RDS MySql est créée ou non.

Supprimer l'instance RDS MySql créée à l'aide de Terraform

Si vous n'avez plus besoin des ressources que vous avez créées à l'aide de la configuration mentionnée dans le fichier main.tf, vous pouvez utiliser la commande "terraform destroy" pour supprimer toutes ces ressources.

terraform détruire

Conclusion

Dans cet article, nous avons vu les étapes pour créer une instance RDS MySql dans la région de notre choix. Nous avons également vu comment l'instance que nous avons créée peut être supprimée en une seule commande.


Linux
  1. Comment créer et ajouter un volume EBS dans une instance AWS (EC2)

  2. Comment lancer une instance AWS EC2 à l'aide de Terraform

  3. Créer un cloud privé virtuel (VPC) sur AWS à l'aide de Terraform

  4. Créer une instance EC2 sur AWS à l'aide de Terraform

  5. Comment créer un rôle IAM dans AWS à l'aide de Terraform

Comment créer une instance Amazon AWS EC2 à l'aide de Python Boto3

Comment créer une instance RDS à l'aide de Python Boto3 sur AWS

Comment créer un compartiment S3 à l'aide de Python Boto3 sur AWS

Comment créer une table DynamoDB dans AWS

Comment créer une instance Ubuntu EC2 sur AWS

Comment lancer une instance OpenStack à l'aide d'Horizon Dashboard