TerraformでEC2をデプロイしてみた(本当にEC2だけ)
Terraformを利用するにあたり、設定しなければならないものが存在する。
環境としてはM3 Macを使用します。CloudサービスはAWSです。
- Homebrewのインストール(ここはインストール済みの前提とします)
- AWSアカウント(ここは今回作成済みの前提とします)
- AWS Identity Centerの設定とSSOによるコンソールログイン(ここは今回設定済みの前提とします)
- AWS CLIによるSSOログイン(ここは今回設定済みの前提とします)
- terraformのインストール(ここを記載していく)
Terraformのバージョンマネージャーの導入
まずは、TerraformのバージョンマネージャーであるtenvをHomebrewを使用してインストールしていく
共同署名チェック(共同署名チェックを有効にする必要がある場合)を有効にする必要がある場合はcosignをインストールする
brew install cosign
brew install tenv
これでtenvのインストールは完了です。
バージョン指定
設定できるバージョンの一覧を取得します。
tenv
Which tool do you want to manage ? # terraformを選択するとダウンロード可能なバージョン一覧が見れる
[ ] tofu
[ ] terraform
[ ] terragrunt
[ ] terramate
[ ] atmos
# terraformを選択すると下記のように表示される
Which Terraform version(s) do you want to install(I) or uninstall(U) ? (X mark already installed)
[ ] 1.13.0-alpha20250521
[ ] 1.12.1
[ ] 1.12.0
[ ] 1.12.0-rc2
[ ] 1.12.0-rc1
[ ] 1.12.0-beta3
[ ] 1.12.0-beta2
[ ] 1.12.0-beta1
なお、インストール済みのものは[X]となっているはずである
好きなバージョンを選択するとインストールされる
もしくはlatestをインストールしたい場合は
tenv tf install
でlatestがインストールされる。installの後にバージョンを指定すれば指定されたバージョンもインストール可能である。
インストール済み一覧を見たい場合は
tenv tf list
1.12.1 (never used)
で一覧が表示される。
tenvでterraformのバージョン決定する
基本的には下記の優先順位で使用バージョンが決定される
- TFENV_TERRAFORM_VERSION 環境変数に設定されたバージョン
- .terraform_versionファイルの中に記載されたバージョン(コマンド実行ディレクトリから上へ探索し、最初に見つかったファイルのバージョン)
- コマンドで指定したデフォルトバージョン
コマンドは下記
tenv tf use デフォルトにしたいバージョン
Terraformの初期化とデプロイ
初めて使用する場合は初期化を行わなければならない。
VPCとサブネットは作成しておいてください。
- tfファイルを作成
- initコマンドで初期化
- planコマンドで実行計画を確認
- applyコマンドでリソースをデプロイ
上記の順番で作業を進めていく
1.tfファイル作成(プロジェクトを作成)
まず適当にディレクトリを作成し、main.tfを作成する(下記はEC2を作成例)
provider "aws" {
region = "ap-northeast-1"
profile = "admin" # SSOでログインしたプロファイル名
}
resource "aws_instance" "hello-world" {
ami = "ami-0c1638aa346a43fe8"
instance_type = "t2.micro"
subnet_id = "subnet-0d6271c9f83a42751"
}
2.initを行う
先ほど作成したディレクトリ階層で初期化を実施
terraform init
すると.terraformディレクトリと.terraform-provider-aws_v~のようなバージョンファイルが作成されたはずである。
これで初期化はOK(初期化は初めてterraformで作業をする場合は一度だけ行う)
SSOログインをしていない場合はAWS CLIからログイン実行
aws sso login --profile your-sso-profile
一応、現在の有効ユーザーを確認
aws sts get-caller-identity
使用したいユーザーと違う場合は明示的に指定してあげる
aws sts get-caller-identity --profile my-sso-admin
※providerの設定部分でprofileを使用しているため、基本的にはそこのユーザーが使用されるので恐らくは問題ない
3.planを確認する
initが終わったので、planを確認していく
terraform plan
実行計画が表示される
4.applyで実行する
applyコマンドで実行をしていく
途中で変更を反映していいかを聞いてくるため、yesを入力
terraform apply
問題なく完了すればAWSのマネジメントコンソールからEC2が構築されているのが確認できる
ここまででterraformの初期設定と開発できる環境は整った
最後にお掃除をしておく
destoryコマンドを叩く
こちらも途中で削除していいか聞かれるためyesと入力
terraform destroy
AWSマネジメントコンソールから確認するとEC2が終了済みになっていることが確認できる
また今回作成したVPCとサブネットも削除しておいてください(VPCは課金され続けますので忘れずに!)
以上となります。