amazon-web-services - Terraform - 所需字符串列表(AWS 中的 cidr_blocks)

标签 amazon-web-services terraform aws-cloudformation iaas

在 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"]"

第五次尝试:

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 命令后收到提示时看到的内容)only supports string values因此,如果您想传递不是字符串的内容,那么您将需要以非交互方式进行传递。这可以是variables documentation中列出的任何选项之一。 。这些是:

  • In a Terraform Cloud workspace.
  • Individually, with the -var command line option.
  • In variable definitions (.tfvars) files, either specified on the command line or automatically loaded.
  • As environment variables.

在您的情况下,您可以使用以下命令运行计划:

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",
]

关于amazon-web-services - Terraform - 所需字符串列表(AWS 中的 cidr_blocks),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756386/

相关文章:

cloud-init - cloudformation 似乎没有在 UserData 中运行(或创建)脚本

node.js - AWS SQS 从 lambda 触发到 Amazon Lightsails

php - 尽管进行了配置,NginX 仍会在 60 秒后发出 HTTP 499 错误。 (PHP 和 AWS)

amazon-web-services - 调用另一个(长)Lambda 时 AWS Lambda 超时

python - 如何使用 boto 获取给定工作流执行的 SWF 事件信息

amazon-web-services - 有多少 Amazon Connect 可以通过 Terraform、Ansible 或其他方法编写脚本?

Terraform:使用模块和 for_each 获取输出

amazon-web-services - Terraform 错误创建子网依赖

amazon-web-services - 错误: The provided credentials do not have permission to create the service-linked role for EC2 Spot Instances

amazon-web-services - 在 CFN 资源提供程序测试中创建 S3 存储桶时出现 IllegalLocationConstraintException