はじめに
Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
Terraformの実行環境構築
Terraformはtfenvでバージョン管理ができるようなので今回はtfenvでTerraformをインストールします。
tfenvのインストール
macなのでbrewコマンドでインストールします。
brew install tfenv
tfenvでTerraformをインストール
最新バージョンのterraformをインストールします。
tfenv install latest
インストールしたTerraformのバージョンを確認します
❯ tfenv list
1.3.5
No default set. Set with 'tfenv use <version>'
インストールしたTerraformのバージョンがデフォルトバージョンとなるように設定します
❯ tfenv use 1.3.5
Switching default version to v1.3.5
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.3.5
Terraformでもバージョンを確認します
❯ terraform version
Terraform v1.3.5
on darwin_arm64
Terraformの作業用ディレクトリを作成
作業用ディレクトリを作成して、その中に移動します。
mkdir terraform
cd terraform
Terraformの構成ファイルを作成
Terraformの構成ファイルの拡張子は.tf
です。
terraform.tf
ファイルを作成してTerraform自体の情報を定義します。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
required_version = ">= 1.0.0"
}
provider.tf
ファイルを作成してAWS Providerの情報を定義します。
provider "aws" {
region = "ap-northeast-1"
profile = "terraform"
default_tags {
tags = {
Managed = "terraform"
}
}
}
region
リソースを作成するリージョン
profile
Terraformから利用するAWSのプロファイル名
※AWSプロファイルの設定は今回割愛
default_tags
はTerraformで作成・管理するAWSリソース全てにタグを付与する設定
※この設定をすることでどのリソースがTerraformで作成・管理されたものか判別
ec2.tf
ファイルを作成してEC2インスタンスの情報を定義します。
resource "aws_instance" "test" {
ami = "ami-0404778e217f54308"
instance_type = "t3.micro"
tags = {
Name = "tf_test"
}
}
ami
作成したいインスタンスAMI
instance_type
作成したいインスタンスタイプ
※以上の2項目を最低限指定するとVPCやセキュリティグループはデフォルトで作成
tags
作成したリソースを判別しやすくする
構成ファイルの整形
Terraformにはコードフォーマッターが用意されているので、これで整形します。
terraform fmt
Terraformでリソースを作成
作成した構成ファイルをもとにTerraformでリソースを作成していきます。
Terraformの初期化
以下のコマンドを実行して構成ファイルの定義内容で初期化を行います。
terraform init
Terraformの実行計画
構成ファイルを実行した際の実行計画が確認できます。
具体的にどんなリソースが作成されるのか確認します。
※実環境には影響を与えないので安全に実行できます。
terraform plan
Terraformの実行計画を反映
terraform plan
で作成されるリソースに問題がなければその内容を実環境に反映させます。
terraform apply
※実環境に影響を与えるので実行前に確認のダイアログが表示されるのでyes
と入力
作成したインスタンスの確認
ここで作成したインスタンスを確認しましょう。
Nameタグにtf_test
が設定されたインスタンスが作成されているはずです。
以下のコマンドでも確認できます
terraform show
TerraformでEC2を削除
作成したインスタンスの確認ができたら削除を行います。
Terraformの削除の実行計画
terraform plan
コマンドにオプション-destroy
を付与することで、削除の実行計画を確認することができます。
terraform plan -destroy
Terraformの削除の実行計画を反映
削除の実行計画が問題なければ、反映させます。
terraform destroy
※destroy
はTerraform管理下にあるリソースを全て削除します
意図しない環境で実行しないように十分注意してください
※確認のダイアログが表示されるのでyes
と入力
削除したインスタンスの確認
ここで削除したインスタンスを確認しましょう。
さいごに
はじめてTerraform使ってAWS上にEC2を作ってみましたが、やはりコードで管理ができるようになると、どんな設定をしたのかが全てコードに残るので、それだけでもかなりの恩恵を感じられました。
次回は作ったEC2にアクセスするための設定をTerraformで行いたいと思います。