【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件目)
よろしければ、スキボタン及びサポートお願いします。勉強の励みになります。
この記事が気に入ったらサポートをしてみませんか?