2017-06-01 41 views
0

假设我有两种不同的风景AWS和Google Cloud(只是一个示例,可能是任何基础架构)。 他们都有很多种类的资源,变量等。使用和连接可能也会有所不同。是否有可能向Terraform添加代码

我想在相同的Terraform脚本中使用它们,它甚至有可能吗?或者每个景观都需要它自己的脚本?

我可以添加一些代码(如果是支持哪种语言?)来识别景观并运行相关资源/提供程序等?

在此先感谢!

+0

的可能的复制[如何在云无关的方式使用Terraform(https://stackoverflow.com/questions/42789247/how-to-use-terraform-in-a-cloud-agnostic -way) – ydaetskcoR

回答

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加载顺序并不重要。

https://www.terraform.io/docs/configuration/load.html

+0

谢谢,我会试试看。 无论如何,我的意思更像是,如果我把我的脚本分成两个文件,比如aws.tf和google.tf,在main.tf(或任何其他文件)中,我指定要运行哪一个aws.tf或google.tf。 –

+0

我已经添加了文件加载顺序的链接。 Terraform将加载具有.tf或.ksom扩展名的目录中的所有文件 – strongjz

相关问题