使用Terraform在AWS上构建环境的方法(利用后端功能)

从上次的故事继续…

本次将讨论在多人共同修改同一个环境时所需做出的响应。之前在gitignore中,将“*.tfstate”文件无意中排除在版本管理之外,但这实际上非常重要。

這個文件裡面實際上寫有詳細的設定信息,格式是JSON。它還記錄了所創建使用者的訪問金鑰,因此需要小心處理。

进行以下设置后,在应用时会将其保存到S3,并且不再保留在本地。

我参考了以下的设置方法。

使用 Terraform v0.11,借助 Amazon S3 backend 来管理 tfstate 文件。
参考链接:https://qiita.com/marshmallow911/items/e8c05f580d07451fcf5e

使用Terraform的后端功能来管理.tfstate文件
https://qiita.com/siro33950/items/1b94bc8234c46e440057

修改的要点

    如果不将访问密钥管理为环境变量,则无法正常运行。
    • terraform.tfvarsを削除

 

    envファイルの作成
AWS_ACCESS_KEY_ID=**********************
AWS_SECRET_ACCESS_KEY=**********************
AWS_DEFAULT_REGION=ap-northeast-1
    请编辑 main.tf。
terraform {
    required_version = ">= 0.11.7"

    backend "s3" {
        bucket = "terraform-state-bucket" <- ユニークなるように変更
        key    = "terraform.tfstate.aws"
    }
}

provider "aws" {
}
    编辑Shell以加载环境变量。
#!/usr/bin/env bash

set -eu

SCRIPT_DIR=$(cd $(dirname $0); pwd)

cd $SCRIPT_DIR/../

docker run --env-file $(pwd)/aws/.env -i --rm -t -v $(pwd)/aws:/aws -w /aws hashicorp/terraform:light $@

通过使用AWS控制台,在S3中创建存储桶。

在 main.tf 文件中创建一个名为 “terraform-state-bucket” 的存储桶。

假设在创建时设置版本控制会有好处。

进行活动

运行以下命令初始化 AWS 的 Terraform:
$ sh bin/terraform_aws.sh init


我迷上了这个地方

我想重新创建S3存储桶。

terraform {
    required_version = ">= 0.11.7"

    backend "s3" {
        bucket = "terraform-state-bucket"  <- 変更
        key    = "terraform.tfstate.aws"
    }
}

provider "aws" {
}

需要运行重新构建设置的命令,因为遇到了无法找到存储桶的错误,因此无法做任何事情。

运行以下命令本地化地转换成中文,提供一个选项:
sh bin/terraform_aws.sh init –reconfigure

使用以下命令进行本地化转换:
运行 bin/terraform_aws.sh init –reconfigure

重新构建后,应用发生错误,提示已存在。

将 terraform.tfstate.aws 复制到新的存储桶中。
*我在尝试中出错并且无法进行验证。

广告
将在 10 秒后关闭
bannerAds