resource "aws_instance" "node" {
for_each = var.node_map
ami = data.aws_ami.ubuntu.id
subnet_id = aws_subnet.development-public-1b.id
key_name = aws_key_pair.nodes.key_name
instance_type = each.value.type
vpc_security_group_ids = [aws_security_group.dev-ec2-sg.id]
associate_public_ip_address = true
tags = {
Name = each.key
}
root_block_device {
volume_type = "gp2"
volume_size = each.value.size
delete_on_termination = true
}
}
我正在尝试获取与每个 ec2 实例关联的公共 IP
output "instance_public_ip" {
value = {
"${aws_instance.node.*.nodeid}" = "${aws_instance.node.*.public_ips}"
}
description = "The public IP address of the main server instance."
}
但是我收到以下错误
Error: Unsupported attribute
on node-updated.tf line 194, in output "instance_public_ip":
194: "${aws_instance.node.*.nodeid}" = "${aws_instance.node.*.public_ips}"
This object does not have an attribute named "nodeid".
Error: Unsupported attribute
on node-updated.tf line 194, in output "instance_public_ip":
194: "${aws_instance.node.*.nodeid}" = "${aws_instance.node.*.public_ips}"
This object does not have an attribute named "public_ips".
如果您可以的话,请告诉我在与实例关联后如何访问公共IP。预先感谢您的建议!!
associate_public_ip_address = true 应该在为 vpc 编写脚本后在子网部分完成。
resource "aws_vpc" "my_vpc" {
cidr_block = "172.16.0.0/16"
tags = {
"name" = "tf-example"
}
}
# AWS SUBNET ATTACHED TO THE AWS VPC
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "172.16.10.0/24"
availability_zone = "af-south-1a"
map_public_ip_on_launch = true
tags = {
"name" = "tf-example"
}
}