Группа безопасности AWS не в ошибке VPC с Terraform - PullRequest
0 голосов
/ 30 августа 2018

Короче говоря, используя Terraform, я хочу

  1. Создание виртуальной машины в AWS
  2. Включите виртуальную машину в группу безопасности, которая разрешает порты 80, 443 и 22.

Выполнить пункт 1 было просто. Для выполнения пункта 2 я понял, что:

  • Сначала мне нужно было создать VPC. Это сработало.
  • Затем мне понадобилась подсеть внутри виртуальной машины. Это сработало.
  • Затем мне нужно было создать группы безопасности, связанные с VPC. Это сработало.
  • Затем мне нужно было добавить идентификаторы группы безопасности VPC к моему aws_instance. ЭТА ЛИНИЯ ПРИЗЫВАЕТ ЕГО ПРОВЕРИТЬ vpc_security_group_ids = ["${aws_security_group.allow_ssh.id},${aws_security_group.allow_web.id}"]

У меня есть следующий план Terraform:

# Provider Details
provider "aws" {
  region                  = "us-east-1"
  shared_credentials_file = "/Users/default/.aws/credentials"
  profile                 = "my-profile"
}

# Main VPC
resource "aws_vpc" "vpc_main" {
  cidr_block = "10.0.0.0/16"

  enable_dns_support   = true
  enable_dns_hostnames = true

  tags {
    Name = "Main VPC"
  }
}

resource "aws_subnet" "public" {
  vpc_id                  = "${aws_vpc.vpc_main.id}"
  cidr_block              = "10.0.0.1/16" 
  map_public_ip_on_launch = true
  tags {
    Name                  = "Public Subnet"
  }
}

resource "aws_security_group" "allow_web" {
  name        = "allow-web-traffic"
  description = "Allow all inbound/outbound traffic on 80 443"
  vpc_id      = "${aws_vpc.vpc_main.id}"

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port = 443
    to_port   = 443
    protocol  = "tcp"
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_security_group" "allow_ssh" {
  name        = "allow-ssh-traffic"
  description = "Allow ssh traffic on 22"
  vpc_id      = "${aws_vpc.vpc_main.id}"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_instance" "proxy_server" {
  ami           = "ami-6871a115" # RHEL 7.5 HVM SSD
  instance_type = "t2.micro"     
  key_name      = "cwood_sa"
  vpc_security_group_ids = ["${aws_security_group.allow_ssh.id},${aws_security_group.allow_web.id}"] # this breaks it
  subnet_id     = "${aws_subnet.public.id}"      
}

Получившаяся ошибка.

* aws_instance.proxy_server: Error launching source instance: InvalidGroup.NotFound: The security group 'sg-063c2b4b4836f18aa,sg-07e562845b70bf125' does not exist in VPC 'vpc-0397460a8f633574c'
status code: 400, request id: dae8b8e8-8259-4ef1-b9c2-a8b782f96235

Но если я загляну в Консоль AWS, эти группы безопасности связаны с VPC.

Я предполагаю, что где-то здесь делаю фундаментальную ошибку и мне нужна помощь.

1 Ответ

0 голосов
/ 31 августа 2018

Каждая группа безопасности должна быть заключена в кавычки. У вас есть строка:

vpc_security_group_ids = ["${aws_security_groups.allow_ssh.id},${aws_security_group.allow_web.id}"]

это не правильный синтаксис списка HCL . Обновите строку вашей группы безопасности:

vpc_security_group_ids = ["${aws_security_groups.allow_ssh.id}","${aws_security_group.allow_web.id}"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...