見出し画像

【52】【AWS】【Terraform】Terraformの環境構築

この記事を読むと、Terraformの環境構築を学ぶことができます。
コードベースでAWSの環境を構築できる、Terraformがめちゃくちゃ便利です。何よりも楽しいです!
がっつり学びたいのであれば、この本、
実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing)) 
を買って学びましょう。
2019年出版なのでやや古くなっている点に注意が必要です。
では、さっそく本題に行きましょう。

Terraformインストール方法

ユーザーの作成
ルートユーザーが作成されている前提で話を進めます。
AWSのコンソール上でユーザーを追加します。
アクセスキー - プログラムによるアクセスをチェックします。
ここをチェックすると、アクセスキーID、シークレットアクセスキーのみで認証できます。
次に、既存のポリシーを直接アタッチ
AdministratorAccess
を選択します。
一番権限が強いので、アカウント管理に注意が必要です。
ベストプラクティスは最小限の権限を与えることです。

ルートユーザ?と思った方はこの記事で

AWS CLI
バージョンの確認

aws --version

インストール及びアップグレード

pip3 install awscli --upgrade

環境変数の設定

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=ap-northeast-1a

注意!
テキストではこの表記でしたが、私の環境ではうまくいきませんでした。
まず、シェル変数を定義します。

AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE

次に、環境変数を定義するとうまくいきました。

export AWS_ACCESS_KEY_ID

認証できればIDが表示されます。

aws sts get-caller-identity --query Account --output text

Terraformをinstallする

brew install terraform

terraform --version

tfenvのインストール

Terraformのバージョンマネージャー

brew install tfenv

dockerでterraformを使う

あるいはdockerでterraformを使うこともできます。

バージョンの確認

docker run --rm hashicorp/terraform --version

terraformの起動とコマンド

docker run --rm -i -v $PWD:/work -w /work \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION \
hashicorp/terraform:<tag名>

エイリアスを設定しておくと楽になります。

vim ~/.zshrc

alias docker_terraform='docker run --rm -i -v $PWD:/work -w /work \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION \
hashicorp/terraform:latest'

git-secretsのインストール

アクセスキーやパスワードなどの秘匿情報をコミットしようとすると警告してくれる。

brew install git-secrets

基本操作

カレントディレクトリにmain.tfファイルを作ります。


touch main.tf

terraform {
required_providers {
 aws = {
  source  = "hashicorp/aws"
  version = "~> 3.27"
 }
}
required_version = ">= 0.14.9"
}
provider "aws" {
profile = "default"
region  = "ap-northeast-1"
}
resource "aws_instance" "app_server" {
ami           = "ami-001bade410cd78e39"
instance_type = "t2.micro"
tags = {
 Name = "ExampleAppServerInstance"
}
}

新しいプランを実行する

terraform init
terraform apply

これでEC2インスタンスが作成される。

後始末

terraform destroy

AWS,Terraformに関する記事の一覧

参考文献

実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing)) オンデマンド (ペーパーバック) 

最後に
私がブログを書く目的は、素晴らしい本や、素晴らしい方々の技術記事を知って頂きたいからです。ぜひ、上記の参考文献を見て下さい。(noteなので広告とかは一切ありません。)

現在、株式会社grabssに行くために最後の悪あがきをしています!!
現在の進行状況
この記事は52件目の投稿。目標達成。
目標再設定
20日までに100件目指す!!(52件目)

よろしければ、スキボタン及びサポートお願いします。勉強の励みになります。

この記事が気に入ったらサポートをしてみませんか?