#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