如何在terraform中为s3后端声明变量?

问题描述 投票:0回答:4

s3.tf

terraform {
backend "s3" {
bucket = "some-bucket"
key = "path/to/key"
region = "some-aws-region" 
}}

如何将存储桶和区域值从变量.tf 文件传递给此?

variables amazon-s3 runtime terraform
4个回答
51
投票

你好,这是一个解决方案:

terraform {
  backend "s3" {
  }
}

像这样传递后端然后:

关于 terraform init 命令:

terraform init \
-backend-config="bucket=${TFSTATE_BUCKET}" \
-backend-config="key=${TFSTATE_KEY}" \
-backend-config="region=${TFSTATE_REGION}" 

你应该使用 env 来设置

TFSTATE_BUCKET TFSTATE_KEY and TFSTATE_REGION

这里是文档的链接:有关后端“部分配置”的 Terraform 文档


17
投票

Montassar的回答相当不错,但我更喜欢文件版本:

  1. 创建
    dev.conf
    文件
    bucket="some-bucket"
    region="some-aws-region"
    
  2. 删除
    main.tf
    中的那些属性,
    terraform {
     backend "s3" {
      key = "path/to/key"
    }}
    
  3. 运行初始化:
    terraform init -backend-config=dev.conf
    

地球源


2
投票

我相信这目前是不可能的,因为如果你在其中添加变量插值,你会得到一个错误

terraform.backend:配置不能包含插值


0
投票

我发现您正在尝试使用不同的环境并在 S3 配置中指定它们。但我建议你使用

workspaces

创建新工作区:

terraform state new <name>

© www.soinside.com 2019 - 2024. All rights reserved.