LoginSignup
0
0

More than 5 years have passed since last update.

Terraformを使ってAWS環境を構築するやり方(Backend機能を利用)

Last updated at Posted at 2018-07-03

前回の続きから・・・

今回は複数人で同じ環境を変更する際に必要な対応になります。
前回gitignoreにて、しれっと管理外にした「*.tfstate」ファイルですが、これが重要になります。

こちらのファイル何かというとJSON形式で実際に設定した詳細な情報がかいてあります。
作成したユーザーのアクセスキーとかも記載されているので取扱いは注意が必要。

下記の設定を行うとapplyした際にS3に保存するという動きに変わり、ローカルに残さないようになります。

設定方法については以下を参考にしました。

Terraform v0.11でAmazon S3 backendを使ってtfstateファイルを管理する
https://qiita.com/marshmallow911/items/e8c05f580d07451fcf5e

TerraformのBackend機能を利用して.tfstateを管理する
https://qiita.com/siro33950/items/1b94bc8234c46e440057

修正点

  1. アクセスキーの管理を環境変数にしないと上手く動作しませんでした。
  • terraform.tfvarsを削除
  • envファイルの作成
aws/.env
AWS_ACCESS_KEY_ID=**********************
AWS_SECRET_ACCESS_KEY=**********************
AWS_DEFAULT_REGION=ap-northeast-1
  1. main.tfを編集
main.tf
terraform {
    required_version = ">= 0.11.7"

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

provider "aws" {
}
  1. シェルが環境変数を読み込むように編集
bin/terraform_aws.sh
#!/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"

作成時にバージョニングを設定しておくといいようです

実行

$ sh bin/terraform_aws.sh init


ハマったところ

S3バケットを作り直したくなった...

main.tf
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

再構築して、applyしたら既に存在するというエラーが出た

terraform.tfstate.aws を新しいバケットにコピー
※自分は失敗して消してしまい検証できていないです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0