让我们说我有两种不同的风景:AWS和Google Cloud(只有一个例子,可以是任何基础设施)。 它们都有很多种资源,变量等。可能使用和连接也不同。
我想在同一个Terraform脚本中使用它们,它甚至可能吗?或者每个景观都需要它自己的剧本?
我是否可以添加一些代码(如果支持哪种语言?)来识别格局并运行相关的资源/提供程序等。
提前致谢!
答案 0 :(得分:0)
您可以在provider.tf文件中定义多个提供程序。我没有尝试过云提供商,但这是尝试的语法。
variable "aws_profile" {}
variable "region" {}
provider "aws" {
alias = "west"
profile = "${var.aws_profile}"
region = "${var.region}"
shared_credentials_file = "~/.aws/credentials"
}
provider "google" {
alias = "central"
credentials = "${file("account.json")}"
project = "my-gce-project"
region = "us-central1"
}
然后您可以指定该资源的提供者。
# West coast region
provider "aws" {
alias = "west"
region = "us-west-2"
}
如果未指定提供程序,则使用默认提供程序配置(不设置别名的提供程序配置)。提供者字段的值为TYPE.ALIAS,例如上面的“aws.west”。
https://www.terraform.io/docs/configuration/providers.html
编辑:terraform加载顺序无关紧要。