【问题标题】:How can I pass different s3 bucket for terraform backend?如何为 terraform 后端传递不同的 s3 存储桶?
【发布时间】:2021-09-01 00:13:12
【问题描述】:

我正在通过此文档将 terraform 状态保存到 s3 存储桶:https://www.terraform.io/docs/language/settings/backends/s3.html

但它提到我不能使用变量A backend block cannot refer to named values (like input variables, locals, or data source attributes).

terraform {
  backend "s3" {
    bucket = "mybucket"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}

问题是我需要在不同的 AWS 账户和区域中运行 terraform。我的 s3 存储桶名称包括 accountId 和 region。如何在不手动更新配置文件的情况下使其工作?

【问题讨论】:

标签: amazon-web-services amazon-s3 terraform


【解决方案1】:

我想在这种情况下使用 Ansible。这可能不是最有效的方法或正确使用 Ansible,但您可以使用 Jinja2 模板。所以你可以像下面这样创建一个 Jinja2 模板文件。

terraform.tf.j2

 terraform {
  backend "s3" {
    bucket = "{{ aws-account-name/id }}-{{ aws-region }}-terraform"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}

然后,当您创建基础设施时,您可以将必要的值提供给terraform.tf.j2 文件并动态创建terraform.tf 文件。

【讨论】:

    猜你喜欢
    • 2020-02-05
    • 2018-05-29
    • 2021-06-07
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多