【问题标题】:Is it possible to add code to Terraform是否可以将代码添加到 Terraform
【发布时间】:2017-11-02 05:45:48
【问题描述】:

假设我有两个不同的环境 AWS 和谷歌云(只是一个例子,可以是任何基础设施)。 两者都有很多种类的资源、变量等,可能用法和连接方式也会不同。

我想在同一个 Terraform 脚本中同时使用它们,这可能吗?还是每个景观都需要自己的脚本?

我是否可以添加一些代码(如果可以,支持哪种语言?)来识别环境并运行相关资源/提供者等?

提前致谢!

【问题讨论】:

标签: landscape terraform


【解决方案1】:

您可以在 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"
}

如果未指定提供程序,则使用默认提供程序配置(未设置别名的提供程序配置)。 provider字段的值为TYPE.ALIAS,如上面的“aws.west”。

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

编辑:terraform 加载顺序无关紧要。

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

【讨论】:

  • 谢谢,我试试。无论如何,我的意思更像是,如果我将脚本分成两个文件,例如 aws.tf 和 google.tf 之类的文件,并且在 main.tf (或任何其他文件)中,我将指定要运行 aws.tf 或 google 的文件.tf.
  • 我已将链接添加到文件的加载顺序。 Terraform 将加载目录中具有 .tf 或 .ksom 扩展名的所有文件
猜你喜欢
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多