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 cosignbrew 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 destroyAWSマネジメントコンソールから確認するとEC2が終了済みになっていることが確認できる
また今回作成したVPCとサブネットも削除しておいてください(VPCは課金され続けますので忘れずに!)
以上となります。