Что я пытаюсь достичь:
Создайте кластер RDS Aurora и поместите его в тот же VPC, что и экземпляры EC2, которые я запускаю, чтобы они могли общаться.
Я пытаюсь запустить SG с именем "RDS_DB_SG" и сделать его частью VPC, который я создаю в процессе.
Я также создаю SG с именем "BE_SG" и делаю его частью того же VPC.
Я делаю это, чтобы я мог получить доступ между 2 (RDS и BE сервер).
Что я сделал до сих пор:
Создал код .tf и все запустил.
Что я получил:
Все нормально, если я не включаю кластер RDS в SG RDS - RDS создает свой собственный VPC.
Когда я включаю RDS в SG, который я хочу для него, кластер RDS не может запуститься и получить ошибку.
Ошибка, которую я получил:
"Экземпляр БД и группа безопасности EC2 находятся в разных VPC. Экземпляр БД находится в vpc-5a *** 63c, а группа безопасности EC2 находится в vpc-0e5391 ***** 273b3d"
Обходной путь на данный момент:
Я запустил инфраструктуру без указания VPC для RDS. Он создал свой собственный VPC по умолчанию.
Затем я создал ручной пиринг VPC между VPC, который был создан для EC2, и VPC, который был создан для RDS.
Но я хочу, чтобы они были в одном и том же VPC, поэтому мне не нужно будет создавать руководство по пирингу VPC.
Мой .tf код:
variable "vpc_cidr" {
description = "CIDR for the VPC"
default = "10.0.0.0/16"
}
resource "aws_vpc" "vpc" {
cidr_block = "${var.vpc_cidr}"
tags = {
Name = "${var.env}_vpc"
}
}
resource "aws_subnet" "vpc_subnet" {
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "${var.vpc_cidr}"
availability_zone = "eu-west-1a"
tags = {
Name = "${var.env}_vpc"
}
}
resource "aws_db_subnet_group" "subnet_group" {
name = "${var.env}-subnet-group"
subnet_ids = ["${aws_subnet.vpc_subnet.id}"]
}
resource "aws_security_group" "RDS_DB_SG" {
name = "${var.env}-rds-sg"
vpc_id = "${aws_vpc.vpc.id}"
ingress {
from_port = 3396
to_port = 3396
protocol = "tcp"
security_groups = ["${aws_security_group.BE_SG.id}"]
}
}
resource "aws_security_group" "BE_SG" {
name = "${var.env}_BE_SG"
vpc_id = "${aws_vpc.vpc.id}"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "BE" {
ami = "ami-*********************"
instance_type = "t2.large"
associate_public_ip_address = true
key_name = "**********"
tags = {
Name = "WEB-${var.env}"
Porpuse = "Launched by Terraform"
ENV = "${var.env}"
}
subnet_id = "${aws_subnet.vpc_subnet.id}"
vpc_security_group_ids = ["${aws_security_group.BE_SG.id}", "${aws_security_group.ssh.id}"]
}
resource "aws_rds_cluster" "rds-cluster" {
cluster_identifier = "${var.env}-cluster"
database_name = "${var.env}-rds"
master_username = "${var.env}"
master_password = "PASSWORD"
backup_retention_period = 5
vpc_security_group_ids = ["${aws_security_group.RDS_DB_SG.id}"]
}
resource "aws_rds_cluster_instance" "rds-instance" {
count = 1
cluster_identifier = "${aws_rds_cluster.rds-cluster.id}"
instance_class = "db.r4.large"
engine_version = "5.7.12"
engine = "aurora-mysql"
preferred_backup_window = "04:00-22:00"
}
Любые предложения о том, как достичь моей первой цели?