【问题标题】:Trouble setting terraform variable from CLI从 CLI 设置 terraform 变量时遇到问题
【发布时间】:2017-01-07 18:20:58
【问题描述】:

我的 terraform 项目布局类似于:

[project root dir]
main.tf
  - my_module [directory]:
      variables.tf
      my_instance.tf

在variables.tf 我有这样的东西:

variable "foo-ami" {
  default = "ami-12345"
  description = "Super awesome AMI"
}

在my_instance.tf 我这样引用它:

resource "aws_instance" "my_instance" {
  ami = "${var.foo-ami}"
  ...
}

如果我想从命令行覆盖这个变量,文档here 似乎建议我应该能够从顶层 (main.tf) 位置运行以下命令:

terraform plan -var 'foo-ami=ami-987654'

但是,变量 switch 似乎没有被选中。旧值保持不变。此外,如果我删除默认设置,我会从 terraform 收到一个错误,说它没有设置,所以很明显 -var 开关没有被选中。

想法?

TIA

【问题讨论】:

  • 除了@minamijoyo 的回答,我想为 Terraform 0.7.x 及更高版本添加,您必须对变量使用 HCL 语法。因此,您想要-var 'foo-ami="ami-987654"' 之类的东西。也就是说,将值用双引号括起来,使其成为有效的 HCL 字符串。

标签: terraform


【解决方案1】:

root 和my_module 的变量不同。如果要将变量传递给my_module,则需要指定它。

在main.tf中,你应该如下设置变量:

variable "foo-ami" {}

module "my_module" {
  source = "./my_module"
  foo-ami = "${var.foo-ami}"
  ...
}

有关模块功能的详细信息,请参阅以下文档: https://www.terraform.io/docs/modules/usage.html

【讨论】:

    猜你喜欢
    • 2014-05-20
    • 2022-01-14
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多