我有这个tf文件:
variable "var1" {}
variable "var2" {}
terraform {
backend "s3" {
}
}
module "my-module" {
arg1 = "${var.eb_application_name}"
arg2 = "${var.eb_environment_name}"
source = "git::ssh://[email protected]/blah/my-module.git//my-sub-module
}
output "myoutput" {
value = "${module.my-module.myoutput}"
}
我从控制台运行这些命令:
terraform init -backend-config='region=us-east-1' -backend-config='key=mykey' -backend-config='bucket=mys3-bucket'
terraform apply -var 'var1=balh' -var 'var2=blah'
我想通过一个控制台命令来完成所有这些操作,包括调用我的模块。看看我的tf文件,我可以用terraform的参数来完成所有这些操作,还是我必须有一个tf文件?也许有一种方法可以将tf文件作为原始文本传递(如环境变量)?
最后我得到了你需要的东西。
您可以为每个模块定义变量,例如:
variable "my-module-enable" {
default = true
}
然后使用count
作为开关来启用或禁用此模块。
module "my-module" {
count = "${var.my-module-enable ? 1 : 0 }"
arg1 = "${var.eb_application_name}"
arg2 = "${var.eb_environment_name}"
source = "git::ssh://[email protected]/blah/my-module.git//us-east-1"
}
然后你可以通过terraform args轻松控制它
terraform apply -var 'my-module-enable=false'