2017-06-01 54 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

相關問題