抛出"无效参数值"地址 x.x.x.x 的地形不会在子网的地址范围内伪造。它确实如此



在Terraform部署时出现问题。我有一个创建网络的模块,然后是另一个创建一系列ec2实例的模块。这些服务器需要具有特定的IP地址,这些地址在模块中被调用(我宁愿动态设置这些,但现在它们是"硬编码")。然而,我得到一个警告,我与ec2实例关联的IP地址"不属于子网的地址范围",但它是。下面是基本的分类:

servers
->main.tf
->variables.tf
->outputs.tf
network
->main.tf
->variables.tf
->outputs.tf
main.tf

相关位如下:网络main.tf

# Create VPC
resource "aws_vpc" "foo" {
cidr_block           = "192.168.1.0/24"
enable_dns_hostnames = "true"
enable_dns_support   = "true"
tags = {
Name = "foo"
}
}
# Create a Subnet
resource "aws_subnet" "subnet-1" {
vpc_id            = aws_vpc.foo.id
cidr_block        = "192.168.1.0/24"
availability_zone = "ca-central-1a"
tags = {
Name = "subnet-1"
}
}

服务器main.tf

resource "aws_instance" "bar" {
ami                         = var.some_ami
instance_type               = "t3.medium"
associate_public_ip_address = true
private_ip = "192.168.1.15"

# root disk
root_block_device {
volume_size           = "60"
volume_type           = "gp3"
encrypted             = true
delete_on_termination = true
}
tags = {
Name = "bar"
}
}

main.tf

module "network" {
source = "./network"
}
module "servers" {
source = "./servers"
subnet_id = module.network.aws_subnet
}

一切正常,我在AWS中验证VPC已创建,子网已创建,但由于某种原因,当服务器正在创建时,我得到以下错误:

│错误:创建EC2实例:InvalidParameterValue:地址192.168.1.15不属于子网的地址范围状态码:400

我省略了tfs中一些不相关的部分,但除了这一件事之外,其他一切都像预期的那样工作。有人知道是怎么回事吗?

aws_instance资源没有subnet_id属性。因此实例在默认子网中启动。

添加subnet_id属性如下

resource "aws_instance" "bar" {
ami                         = var.some_ami
instance_type               = "t3.medium"
associate_public_ip_address = true
subnet_id = "your_subnet_id"
private_ip = "192.168.1.15"

# root disk
root_block_device {
volume_size           = "60"
volume_type           = "gp3"
encrypted             = true
delete_on_termination = true
}
tags = {
Name = "bar"
}
}

您也可以使用data resource来获取子网id。

data "aws_subnet" "selected" {
filter {
name   = "tag:Name"
values = ["myawesomesubnet"]
}
}

最新更新