首页 文章

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

提问于
浏览
0

我有这个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 回答

  • 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'
    

相关问题