【问题标题】:Terraform: How to get value of second public ip in module cloudposse ec2Terraform:如何在模块 cloudposse ec2 中获取第二个公共 ip 的值
【发布时间】:2020-06-08 05:10:54
【问题描述】:

如何从 Terraform 模块 EC2 获取第二个 IP 地址的值。

模块-https://github.com/cloudposse/terraform-aws-ec2-instance

我已经使用参数additional_ips_count = 1 创建了实例 EC2。在这种情况下,实例创建了两个网络接口,我需要获取第二个网络接口的值公共 IP 地址。

通常,该模块允许我从 public_ip 的值中提取公共 ip 的值。例如,如果我创建一个名为 server 的模块,我可以使用值 module.server.public_ip 从第一个网络接口获取公共 IP 地址的值,但是如何为使用变量 additional_ips_count = 1 创建的第二个网络执行此操作。

【问题讨论】:

  • 该模块不会以任何方式公开它,因此您的选择是派生模块以自己添加适当的输出,完全删除模块并编写自己的或直接使用资源或提出问题跟踪器上的功能请求。

标签: terraform


【解决方案1】:

您可以解析出从输出 module.multiple_ip.additional_eni_ids 返回的值的值。

module "multiple_ip" {
  source                      = "git::https://github.com/cloudposse/terraform-aws-ec2-instance.git?ref=master"
  ssh_key_pair                = var.key_name
  vpc_id                      = var.vpc_id
  security_groups             = [data.aws_security_group.this.id]
  subnet                      = data.aws_subnet.private_subnet.id
  associate_public_ip_address = true
  name                        = "multiple-ip"
  namespace                   = "eg"
  stage                       = "dev"
  additional_ips_count        = 1
  ebs_volume_count            = 2
  allowed_ports               = [22, 80, 443]
  instance_type               = var.instance_type
}

output "multiple_ip_additional_eni_ids" {
  value = module.multiple_ip.additional_eni_ids
}

output "z_additional_eni_public_ip" {
  value = values(module.multiple_ip.additional_eni_ids)[0]
}

这将返回所需的 ip。

Outputs:

multiple_ip_additional_eni_ids = {
  "eni-0cc853fb9301b2bc8" = "100.20.97.243"
}
z_additional_eni_public_ip = 100.20.97.243

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 2014-10-24
    • 2022-08-24
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    相关资源
    最近更新 更多