簡體   English   中英

terraform aws_security_group 資源中的 CIDR 地址無效,文件中包含 cidr_blocks

[英]invalid CIDR address in terraform aws_security_group resource with cidr_blocks from file

我正在嘗試從包含以下格式的 CIDR 列表的文件創建安全組入口規則:

"127.0.0.1/32",
"127.0.0.1/32",
"127.0.0.1/32"

從文件中檢索 CIDR,如下所示:

cidrs = "${split(",", file("${path.module}/cidrs"))}"

並作為(列表)變量傳遞給aws_security_group資源:

resource "aws_security_group" "test" {
    ...
    ingress {
        ...
        cidr_blocks = "${var.cidrs}"
    }
}

運行terraform plan導致以下錯誤:

[ERROR] root.test: eval: *terraform.EvalValidateResource, err: 
Warnings: []. Errors: [
"ingress.2.cidr_blocks.0" must contain a valid CIDR, got error parsing: 
invalid CIDR address: "127.0.0.1/32"
"ingress.2.cidr_blocks.1" must contain a valid CIDR, got error parsing: 
invalid CIDR address: "127.0.0.1/32"
"ingress.2.cidr_blocks.2" must contain a valid CIDR, got error parsing: 
invalid CIDR address: "127.0.0.1/32"
]

因此,內容或文件似乎被轉換為一個列表或 3 個看起來正確的 cidr 塊,但 terraform 無法解析其中任何一個。

但是,如果我分配cidr_blocks = ["127.0.0.1/32", "127.0.0.1/32", "127.0.0.1/32"]一切似乎都正常。

將列表分配給變量cidrs = ["127.0.0.1/32", "127.0.0.1/32", "127.0.0.1/32"]可以正常工作。 問題似乎是由${split(",", file())

[INFO] Terraform version: 0.11.0  ec9d4f1d0f90e8ec5148f94b6d634eb542a4f0ce+CHANGES

我試圖允許來自 ALB 的流量,我需要將另一個安全組添加到允許來自 ALB 的流量。 所以我的錯誤與您的問題最相似,因此添加答案可能會幫助其他人,因為我沒有找到很好的答案。

如果您想在白名單部分添加另一個安全組,那么它會有所幫助。

    ingress {
    from_port   = 0
    to_port     = 65535
    protocol    = "tcp"
    security_groups = ["${aws_security_group.alb_secuirty_group.id}"]
    description = "HTTP"
  }

我編輯了我的最后一個答案:

如果您需要從逗號分隔的文件中獲取它,則無需拆分值,只需將其設為帶有 [] 的列表

cidr_blocks = ["${var.cidrs}"]

或更簡單的

cidr_blocks = ["${file("cidrs.scv")"}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM