![](/img/trans.png)
[英]invalid CIDR address in terraform aws_security_group resource with cidr_blocks from file
[英]Terraform - list of string required (cidr_blocks in AWS)
在 Terraform 中,我在輸入將存儲在變量中的列表時遇到問題。
在執行terraform plan
,我被要求提供 cidr_blocks (它應該是一個字符串列表)。
我試圖輸入幾個可能代表字符串列表但總是出錯的“表單”。 例子:
第一次嘗試:
$terraform plan
...
var.monitoring_access_ips_mysystem
Enter a value: "10.180.1.0/24", "10.180.2.0/25", "10.180.3.0/23"
第二次嘗試:
var.monitoring_access_ips_mysystem
Enter a value: ["10.180.1.0/24", "10.180.2.0/25", "10.180.3.0/23"]
第三次嘗試:
var.monitoring_access_ips_mysystem
Enter a value: '["10.180.1.0/24", "10.180.2.0/25", "10.180.3.0/23"]'
第四次嘗試:
var.monitoring_access_ips_mysystem
Enter a value: "["10.180.1.0/24", "10.180.2.0/25", "10.180.3.0/23"]"
第 5 次嘗試:
var.monitoring_access_ips_mysystem
Enter a value: "10.180.1.0/24"
對於任何嘗試,錯誤總是相同的:
Error: Incorrect attribute value type
on ecs/security_group.tf line 10, in resource "aws_security_group" "ecs-cluster-sg":
10: cidr_blocks = var.monitoring_access_ips_mysystem
Inappropriate value for attribute "cidr_blocks": list of string required.
ecs/security_group.tf
文件看起來像這樣ecs/security_group.tf:
resource "aws_security_group" "ecs-cluster-sg" {
name = "${var.app_name}-cluster-sg"
vpc_id = var.vpc_id
ingress {
description = "Ingress from monitoring VPC on custom port"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = var.monitoring_access_ips_mysystem
}
...
我可以輸入/傳遞 IP 的有效格式是什么,以便它被接受為“字符串列表”?
UI 輸入(在未定義某些變量的情況下運行 Terraform 命令后提示您看到的內容) 僅支持字符串值,因此如果您想傳遞不是字符串的內容,則需要以非交互方式執行此操作。 這可以是變量文檔中列出的任何選項之一。 這些是:
- 在 Terraform Cloud 工作區中。
- 單獨使用 -var 命令行選項。
- 在變量定義 (.tfvars) 文件中,在命令行中指定或自動加載。
- 作為環境變量。
在您的情況下,您可以使用以下命令運行計划:
terraform plan -var='monitoring_access_ips_mysystem=["10.180.1.0/24", "10.180.2.0/25", "10.180.3.0/23"]'
除非這在每次運行 Terraform 時都可能發生變化,否則通常應該將其放入terraform.tfvars
文件中,如下所示:
monitoring_access_ips_mysystem = [
"10.180.1.0/24",
"10.180.2.0/25",
"10.180.3.0/23",
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.