假設我有兩種不同的風景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