我的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'
但是,变量开关似乎没有被拾取。旧值仍然有效。此外,如果我删除默认设置,我会从terraform中收到错误,说明它没有设置,所以很明显{@ 1}}开关没有被选中。
思考?
TIA
答案 0 :(得分:3)
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