【问题标题】:terraform module argument with null value具有空值的 terraform 模块参数
【发布时间】:2022-01-03 22:16:17
【问题描述】:

我在 terraform 中以 internet_gateway_id 作为参数创建了 route_table 模块,但我想为私有子网 NAT_Instance 创建另一个路由表,但 route_table 模块没有 instance_id 参数。
我想使用相同的 route_table 模块,如果它用于 internet_gateway,则可以具有 internet_gateway_id,如果用于 NAT_Instance,则可以具有 instance_id。
如果不需要,我可以为任何参数赋予值“null”吗?意思是,我想提供 2 个参数,一个是“gateway_id”,另一个是“instance_id”,如果需要接受任何一个,则希望将值作为“null”发送。 我还没有执行下面的代码,但计划编写如下代码。您能否建议我处理这种情况的正确方法?

resource "aws_route_table" "rtable" {
    vpc_id = "${var.vpc_id}"

    route {
    cidr_block = "${var.igw_cidr_block}"
    gateway_id = "${var.igw_id}"
    instance_id = null
    }

    tags = {
       Name = "${var.name}"
    }
}

【问题讨论】:

    标签: terraform


    【解决方案1】:

    是的,下面的代码用于处理这样的场景,例如创建一个路由表模块,该模块可用于通过分别提供一个值为 null 来附加 internet_gateway_id 或 instance_id。

    resource "aws_route_table" "rtable" {
        vpc_id = "${var.vpc_id}"
    
        route {
        cidr_block = "${var.igw_cidr_block}"
        gateway_id = "${var.igw_id}"
        instance_id = "${var.instance_id}"
        }
    
        tags = {
           Name = "${var.name}"
        }
    }
    
    
    # variables declaration file vars.tf
    variable "vpc_id" {}
    variable "igw_cidr_block" {}
    variable "igw_id" {
       default = null
    }
    variable "instance_id" {
       default = null
    }
    variable "name" {}
    

    【讨论】:

      【解决方案2】:

      如果不需要,我可以为任何参数赋值“null”吗?意思是,我想提供 2 个参数,一个是“gateway_id”,另一个是“instance_id”,如果需要接受任何一个,则希望将值作为“null”发送。

      你可以,但你不必这样做。该参数是可选的,它的值默认为null。只需删除参数,不要将任何内容与其关联。

      【讨论】:

        猜你喜欢
        • 2022-01-27
        • 2021-01-30
        • 2021-06-07
        • 1970-01-01
        • 2021-05-09
        • 2021-01-20
        • 2021-07-04
        • 2022-01-14
        • 1970-01-01
        相关资源
        最近更新 更多