如何在terraform中使用本地后端覆盖远程后端?

Dan*_*Dan 5 terraform

我一直在查看 terraform 文档和 udemy 课程来回答这个问题,但找不到答案。我有一个 jenkins 管道,它正在使用 terraform 构建 AWS 基础设施。这是使用通过配置的远程后端

terraform {
  backend "s3" {}
}
Run Code Online (Sandbox Code Playgroud)

堵塞。我想为本地开发覆盖它,以便使用terraform init. 我试过跑步,terraform init -backend=false但我意识到这不是我想要的,因为它也没有创建本地后端。我已经看到terraform init -backend=<file>了一个选项,但是如果我使用它,那么我不知道在文件中放什么来指示默认的本地后端配置。我发现这篇文章覆盖了文件,但它并没有让我相信这个功能存在于这个特定用例的 terraform 中。我想确保我以正确的方式做到这一点。如何使用 terraform 中的默认本地后端配置覆盖远程后端配置?谢谢。

Jak*_*son 13

您提到的Terraform覆盖概念确实适用于此用例。

您可以创建添加_override.tf到末尾元素的文件,覆盖的元素将优先于原始元素。例如<my_existing_file>_override.tf

您可以使用它来覆盖现有的后端配置,覆盖现有的后端基础设施,以便您可以初始化本地状态文件以用于测试/开发目的。

我将创建一个包含以下内容的配置文件:

backend_override.tf:

terraform {
  backend "local" {
    path = "./.local-state"
  }
}
Run Code Online (Sandbox Code Playgroud)

请记住将*_override.tf和添加.local-state到您的 .gitignore 文件中,这样您就不会意外破坏您的 CI。