Группа безопасности и подсеть принадлежат разным сетям - PullRequest
0 голосов
/ 07 ноября 2018

Я работаю над развертыванием IaC на AWS. Все хорошо, за исключением недоумения, которое я испытываю при развертывании экземпляров EC2 через ASG. Когда я запускаю Terraform apply, я получаю следующее сообщение об ошибке:

"Группы безопасности sg-xxxxx и Subnet subnet-xxxxx принадлежат разным сетям. Ошибка запуска экземпляра EC2."

Terraform использует попытку использовать подсеть по умолчанию вместо подсети, которую я определил для использования с созданным мною vpc. В настоящее время я не использую ELB, только используя LC и ASG. Ниже приведен фрагмент кода. Любое понимание будет полезно!

/******************************************************************
                        Subnet Definitions
*******************************************************************/

//Define the public subnet for availability zone A.
resource "aws_subnet" "Subnet_A_Public" {
    vpc_id            = "${aws_vpc.terraform-vpc.id}"
    cidr_block        = "${var.public_subnet_a}"
    availability_zone = "${var.availability_zone_a}"

  tags {
      Name  = "Subnet A - Public"
  }
}

//Define the public subnet for availability zone B.
resource "aws_subnet" "Subnet_B_Public" {
  vpc_id            = "${aws_vpc.terraform-vpc.id}"
  cidr_block        = "${var.public_subnet_b}"
  availability_zone = "${var.availability_zone_b}"

  tags {
      Name  = "Subnet B - Public"
  }
}

/*********************************************************************
                        Security Group (SG) Definitions
**********************************************************************/

//Define the public security group.
resource "aws_security_group" "tf-public-sg" {
    name    = "TF-Public-SG"
    description = "Allow incoming HTTP/HTTPS connections and SSH access from the Internet."
    vpc_id  = "${aws_vpc.terraform-vpc.id}"

    //Accept tcp port 80 (HTTP) from the Internet.
    ingress {
        from_port   = 80
        to_port     = 80
        protocol    = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }

    //Accept tcp port 443 (HTTPS) from the Internet.
    ingress {
        from_port   = 443
        to_port     = 443
        protocol    = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }

    //Accept tcp port 22 (SSH) from the Internet.
    ingress {
        from_port   = 22
        to_port     = 22
        protocol    = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }

    //Accept all ICMP inbound from the Internet.
    ingress {
        from_port   = -1
        to_port     = -1
        protocol    = "icmp"
        cidr_blocks = ["0.0.0.0/0"]
    }

    lifecycle {
        create_before_destroy = true
    }

    tags {
        Name    = "Terraform Public SG"
    }
}

/**************************************************************************
            PUBLIC ASG & LC
***************************************************************************/
resource "aws_launch_configuration" "terraform-public-lc" {
  image_id  = "${var.ami}"
  instance_type = "${var.instance_type}"
  security_groups   = ["${aws_security_group.tf-public-sg.id}"]

  lifecycle {
      create_before_destroy = true
  }
}

resource "aws_autoscaling_group" "tf-public-asg" {
  launch_configuration       = "${aws_launch_configuration.terraform-public-lc.id}"
  availability_zones         = ["${var.availability_zone_a}", "${var.availability_zone_b}"]
  name                       = "tf-public-asg"

  min_size                  = "${var.asg_min_pubic}"
  max_size                  = "${var.asg_max_public}"
  desired_capacity          = "${var.asg_desired_capacity_public}"

  tags {
      key                   = "Name"
      value                 = "tf-public-asg"
      //value                 = "${var.public_instance_name}-${count.index}"
      propagate_at_launch   = true
  }
}
/************************************************************************
            END PUBLIC ASG & LC
*************************************************************************/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...