首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >私有网络内NAT网关公网in列表

私有网络内NAT网关公网in列表
EN

Stack Overflow用户
提问于 2019-09-18 08:34:26
回答 3查看 484关注 0票数 1

能否使用Terraform数据源获取私有网络中NAT网关的公网in列表?

获取子网ids列表的示例显示为here,但它是以aws_subnet_ids数据源为前提的,该数据源首先返回一个列表。

我们每个私有子网都有NAT网关。我没有办法获取私有网络中的NAT网关列表,然后从该列表中获取公网IP。

有没有人需要和/或解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2021-05-07 20:59:25

这个变通方法适用于我,https://github.com/hashicorp/terraform-provider-aws/issues/7575

我的代码示例

代码语言:javascript
复制
data "aws_nat_gateway" "nat_gw" {
 for_each = toset(module.vpc.public_subnets)
 subnet_id = each.value
}

获取需要添加为安全组来源的NAT的公网IP

代码语言:javascript
复制
resource "aws_security_group_rule" "allow_https"{
 type                     = "ingress"
 security_group_id        = module.sg.id
 from_port                = "443"
 to_port                  = "443"
 protocol                 = "tcp"
 cidr_blocks              = [ for v in data.aws_nat_gateway.nat_gw : format("${v.public_ip}%s", "/32") ]
}
票数 1
EN

Stack Overflow用户

发布于 2019-09-18 10:09:02

试试这个:

代码语言:javascript
复制
data "aws_vpc" "selected" {
  cidr_block= "[your_cidr_block]"
}

data "aws_nat_gateway" "default" {
  vpc_id = "${aws_vpc.selected.id}"
}

output "nat_ip" {
  count = "{length(aws_nat_gateway.default.ids)}"
  value = "The NAT Gateway number ${count.index} have the Public IP: + ${aws_nat_gateway.default.*.public_ip}"
}
票数 0
EN

Stack Overflow用户

发布于 2021-12-02 14:59:43

试试这段代码。

代码语言:javascript
复制
terraform {
  required_providers {
    shell = {
      source = "scottwinkler/shell"
      version = "1.7.10"
    }
  }
}

provider "shell" {
  # Configuration options
}

data "shell_script" "nat_gateways" {
  lifecycle_commands {
    read = <<-EOF
      aws ec2 describe-nat-gateways --region ${var.region}
    EOF
  }
}

locals {
  nat_gw_ips = flatten([
    for elem in jsondecode(data.shell_script.nat_gateways.output.NatGateways):
      format("${elem.NatGatewayAddresses[0].PublicIp}%s", "/32")
  ])
}
output "natgwips" {
  value = local.nat_gw_ips
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57983539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档