【问题标题】:Create terraform rules from list从列表创建地形规则
【发布时间】:2019-02-14 03:39:55
【问题描述】:

我正在使用 Terraform v0.11.11。 我希望能够为 openstack 编写一个部署脚本,它需要一个 ip 或 ip 范围或任意长度列表,我想在 vm 中为端口 22 列入白名单,比如说

ip_list = ["11.11.0.0/16","22.22.22.0/8", "33.33.33.33" ...]

有正确应用规则的语法吗?

这行不通,

"openstack_compute_secgroup_v2" "secgroup_1" {
  name        = "a_cluster"
  description = "some security group"

  rule {
    from_port   = 22
    to_port     = 22
    ip_protocol = "tcp"
    cidr        = "${var.ip_list}"
  }

它返回以下内容:


$ terraform  apply 

Error: module.openstack.openstack_compute_secgroup_v2.secgroup_1: rule.3.cidr must be a single value, not a list


但是有什么方法可以做到吗?

【问题讨论】:

  • 看来我的麻烦将在 terraform 0.12 中使用动态“规则”{} 语法解决...
  • 动态rule 语法记录在哪里?我找不到它。

标签: openstack terraform


【解决方案1】:

我没有环境来测试下面的命令。这个想法应该是正确的。

你应该可以调整

resource "openstack_compute_secgroup_v2" "secgroup_1" {
  count       = "${length(${var.ip_list})}"
  name        = "a_cluster_${count.index}"
  description = "some security group"

  rule {
    from_port   = 22
    to_port     = 22
    ip_protocol = "tcp"
    cidr        = "${element(var.ip_list, count.index)}"
  }
}

【讨论】:

  • 我已经更新了问题,但是 "[${var.ip_list}]" 仍然返回错误。
  • 什么是错误信息,你有没有双引号,像这样:"${var.ip_list}"?
  • oups,又更新了,不知道怎么复制粘贴了。
  • "[${var.ip_list}]" return ``` 错误:module.openstack.openstack_compute_secgroup_v2.secgroup_1: 1 个错误发生:* module.openstack.openstack_compute_secgroup_v2.secgroup_1: At column 1、第1行:HIL表达式的输出必须是字符串,或者是单个列表(参数2是TypeList)在:[${var.ip_list}] ``
  • ic,那部分只允许一个CIDR,有趣。
【解决方案2】:

如果您可以升级到 terraform 0.12,请使用动态嵌套块: ip_list = ["11.11.0.0/16","22.22.22.0/8", "33.33.33.33" ...]


 "openstack_compute_secgroup_v2" "secgroup_1" {
  name        = "a_cluster"
  description = "some security group"

 dynamic "rule" {
    for_each = ${var.ip_list}

   content{
    from_port   = 22
    to_port     = 22
    ip_protocol = "tcp"
    cidr        = rule

  }
  }
}

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多