0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Terraformのセットアップ(Cloud9)

Last updated at Posted at 2022-01-14

Terraformのインストール、およびバージョン確認

Cloud9環境は、デフォルトでTerraformがインストールされています。
image.png

terraform.tfstate(リソースの管理ファイル)の管理

terraform.tfstateファイルとは、Terraformの実行に伴って構築されるAWSのインフラ状態を逐次記録しておくためのファイルです。
image.png

terraformコマンドを実行すると自動でローカル環境(Cloud9環境)作成されます。
チームで開発を進める場合、ローカルに保存されていると、変更内容を衝突してしまうことを予想されるため、クラウド(AWSのS3など)へ保管し、変更の衝突を避け、チーム間で同時にインフラ構築が行えるようになります。
またローカルでは紛失、欠損時のリカバリーもできなくなる可能性がある為、クラウド上で保管することが望ましいでしょう。
ここではS3バケットにterraform.tfstateファイルを保管する方法を紹介します。
以後、terraformコマンド実行後、自動でクラウド環境上のtfstateファイルが更新されるようになります。

<手順>

1.S3バケットの作成
2.main.tfファイルの作成、実装
3.terraformコマンドの実行(=tfstateファイルのアップロード)

S3バケットの作成

S3を検索
image.png

バケットを作成をクリック
image.png

バケット名を入力
image.png

パブリックアクセス設定は変更せずそのままとする。
image.png

バケットを作成をクリック
image.png

バケット名をクリック
image.png

アクセス許可タブをクリック
image.png

編集をクリック
image.png

チェックを一旦外す
image.png
image.png
image.png

編集をクリック
image.png

編集をクリック
image.png

ポリシージェネレータをクリック
image.png

以下を入力し、ユーザ情報とバケットを結び付け、バケットに対する許可する実行アクションを選択します。
image.png

<手順>

①Select Type of Policy:S3 Bucket Policy(固定)
②Principal:自分のIAMユーザーのARN
③Actions:ALL Actioncsにチェック

※本来許可するActionは制限すべきだが、ALL Actioncsにチェック

④Amazon Resource Name (ARN):作成したS3バケットのARN

※ARNとは、AWSを一意に識別するリソースネームです。詳細は以下参照。

③Principal

iamを検索
image.png

ユーザをクリック
image.png

ユーザーのARNをコピーして、そのままPrincilpal欄に入力する
image.png

④Amazon Resource Name (ARN)

S3を検索
image.png

該当のバケットを選択し、「ARNをコピー」をクリック
image.png
⑤Amazon Resource Name (ARN)欄にそのまま入力する。

main.tfファイルの作成、実装

image.png

image.png

$ mkdir terraform
$ cd terraform
$ touch main.tf

image.png

terraform/main.tf
# ----------------------------------
# Terraform versions
# ----------------------------------
terraform {
  required_version = ">=1.1"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~>3.0"
    }
  }
  backend "s3" {
    bucket  = "terraform-prd-tfstate-327495"
    key     = "terraform.tfstate"
    region  = "ap-northeast-1"
    profile = "terraform"
  }
}
# ----------------------------------
# Provider
# ----------------------------------
provider "aws" {
  profile    = "terraform"
  region     = var.region
  access_key = var.access_key
  secret_key = var.secret_key
}

$ touch terraform.tfvars
# terraform.tfvarsを編集
access_key = "自分のアクセスキー"
secret_key = "自分のシークレットキー"
region     = "ap-northeast-1"
project    = "terraform"
enviroment = "dev"

※注意
アクセスキー、シークレットキーの漏洩防止のため、tfvarsファイルを第三者に知れる場所に絶対に置かないこと。

terraformコマンドの実行(=tfstateファイルのアップロード)

$ terraform init
# 環境の初期化

$ terraform plan
# 変更内容が表示されるため、確認する。

$ terraform apply
# 変更予定内容を反映し、インフラ環境を構築する。

索引ページ

下記でTerraformに関するテーマをまとめて紹介しています。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?