假设我有两种不同的风景AWS和Google Cloud(只是一个示例,可能是任何基础架构)。 他们都有很多种类的资源,变量等。使用和连接可能也会有所不同。是否有可能向Terraform添加代码
我想在相同的Terraform脚本中使用它们,它甚至有可能吗?或者每个景观都需要它自己的脚本?
我可以添加一些代码(如果是支持哪种语言?)来识别景观并运行相关资源/提供程序等?
在此先感谢!
假设我有两种不同的风景AWS和Google Cloud(只是一个示例,可能是任何基础架构)。 他们都有很多种类的资源,变量等。使用和连接可能也会有所不同。是否有可能向Terraform添加代码
我想在相同的Terraform脚本中使用它们,它甚至有可能吗?或者每个景观都需要它自己的脚本?
我可以添加一些代码(如果是支持哪种语言?)来识别景观并运行相关资源/提供程序等?
在此先感谢!
您可以在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加载顺序并不重要。
谢谢,我会试试看。 无论如何,我的意思更像是,如果我把我的脚本分成两个文件,比如aws.tf和google.tf,在main.tf(或任何其他文件)中,我指定要运行哪一个aws.tf或google.tf。 –
我已经添加了文件加载顺序的链接。 Terraform将加载具有.tf或.ksom扩展名的目录中的所有文件 – strongjz
的可能的复制[如何在云无关的方式使用Terraform(https://stackoverflow.com/questions/42789247/how-to-use-terraform-in-a-cloud-agnostic -way) – ydaetskcoR