Terraform — ожидается, что cidr_block будет содержать допустимое значение, получено: 0.0.0.0 с ошибкой: недопустимый адрес CIDR: 0.0.0.0

#amazon-web-services #terraform #aws-security-group

#amazon-web-services #terraform #aws-security-group

Вопрос:

Я просматриваю документацию, и у них есть aws_vpc.main.cidr_block ресурс. Я определил ресурс, которого нет в документации, но у меня следующая ошибка.

Terraform - expected cidr_block to contain a valid Value, got: 0.0.0.0 with err: invalid CIDR address: 0.0.0.0

Почему это недопустимо? Я хочу разрешить доступ ко всем исходным IP-адресам, чтобы они могли достигать 443.

Файл vpc.tf

 resource "aws_vpc" "main" {
    id = "vpc-0da86af9876e72d66c"
    cidr_block = "0.0.0.0/0"
}
  

Файл test.tf

 resource "aws_security_group" "allow_tls" {
  name        = "allow_tls"
  description = "Allow TLS inbound traffic"
  vpc_id      = aws_vpc.main.id

  ingress {
    description = "TLS from VPC"
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = [aws_vpc.main.cidr_block]
  }

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

  tags = {
    Name = "allow_tls"
  }
}
  

Ответ №1:

VPC — это ваша сеть, это не правило брандмауэра, которое вы уже определили для aws_security_group ресурса. Если вы хотите предоставить HTTP-сервер миру, cidr_blocks в ingress блоке 0.0.0.0/0 также будет.

cidr_block параметр aws_vpc определяет диапазон и размер вашей сети, например 10.0.0.0/16 , 172.31.0.0/16 и 192.168.0.0/24 .

Вы можете прочитать больше о VPC и подсетях в документах AWS .

Вы также не передаете id . Это автоматически генерируется AWS.

Пример:

 resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
}
  

Проверьте документы terraform для aws_vpc, в которых перечислены все поддерживаемые аргументы.

Комментарии:

1. Что, если мне придется использовать существующий vpc?

2. Вы можете просто передать идентификатор существующего VPC в vpc_id параметре для группы безопасности, если он не определен в terraform, вы можете жестко запрограммировать или передать как параметр terraform. Если вы имели в виду, что у вас уже есть VPC и вы хотите начать управление в terraform, вы можете импортировать через terraform import