调用模块而不需要本地tf文件?

时间:2017-12-14 22:55:44

标签: terraform

我有这个tf文件:

variable "var1" {}
variable "var2" {}

terraform {
  backend "s3" {
  }
}

module "my-module" {
  arg1 = "${var.eb_application_name}"
  arg2 = "${var.eb_environment_name}"
  source = "git::ssh://git@bitbucket.org/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文件作为原始文本传递(如环境变量)?

1 个答案:

答案 0 :(得分:1)

最后我得到了你需要的东西。

您可以为每个模块定义变量,例如:

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://git@bitbucket.org/blah/my-module.git//us-east-1"
}

然后你可以通过terraform args轻松控制它

terraform apply -var 'my-module-enable=false'