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
- Compréhension de base de Terraform.
- Terraform installé sur votre système.
- Compte AWS (créez-le si vous n'en avez pas).
- '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
- Écrire des fichiers de configuration Terraform pour l'instance MySql RDS.
- Créez une instance RDS MySql à l'aide des fichiers de configuration Terraform.
- 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.