はじめに
Terraformを使ってAWSリソース(EC2)を作成する手順について、Terraform初学者の自分用のメモを兼ねて記載しておきます。
今回は以下の記事に続きEC2を構築します。
そのためここではVPCが既に構築されている前提で記事を書いています。
前提
・windows環境であること
・Terraformが端末にインストールされていること
・AWS CLIが端末にインストールされていること
・AWSのアカウント(アクセスキーとシークレットアクセスキー)があること
・TerraformでVPCなどが構築済みであること
・EC2はPrivate subnetに作成
・EC2のOSはAmazon Linux 2023を使用
・インバウンドの通信はssh(ポート22)のみ許可、アウトバウンドはすべて許可のセキュリティグループ(sg)を作成
アーキテクチャ図
やること
1.tfファイルの作成
2.Terraformでリソースの作成
3.AWSリソースの確認
1.tfファイルの作成
セキュリティグループとEC2を作成するコードになります。
ファイル名は「ec2.tf」とします
以下のように設定していきます。
# ---------------------------
# Security Group
# ---------------------------
# Security Group作成
resource "aws_security_group" "test_ec2_sg" {
name = "terraform-test-ec2-sg"
description = "For EC2 Linux"
vpc_id = aws_vpc.test_vpc.id
tags = {
Name = "terraform-test_ec2_sg"
}
# インバウンドルール
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# アウトバウンドルール
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
# ---------------------------
# EC2
# ---------------------------
# Amazon Linux 2023 の最新版AMIを取得
data "aws_ssm_parameter" "amzn_linux_2023_latest_ami" {
name = "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64"
}
# EC2作成
resource "aws_instance" "test_ec2"{
ami = data.aws_ssm_parameter.amzn_linux_2023_latest_ami.value
instance_type = "t3.nano"
availability_zone = "${var.az_a}"
vpc_security_group_ids = [aws_security_group.test_ec2_sg.id]
subnet_id = aws_subnet.test_private_subnet10d_sn.id
tags = {
Name = "terraform-ec2"
}
}
2.Terraformでリソースの作成
vpc偏でも記載していますが以下の手順でリソースを作成していきます。
tfファイルがあるディレクトリに移動して、以下のコマンドを入力していきます。
①ワークスペースの初期化
terraform init
「Terraform has been successfully initialized!」が表示されればOKです。
②tfファイルの構文チェック
terraform validate
「Success!」が表示されればOKです。
※構文にエラーがあればエラー個所が表示されます。
③実行計画を作成
terraform plan
作成されるリソースを確認することができます。
④リソースを作成
terraform apply
Enter a valueと出てくるので「yes」と入力するとAWSリソースが作成されます。
Enter a value: yes
3.AWSリソースの確認
作成したリソースを確認
terraform show
AWSのマネジメントコンソールでも正しく作成できているか確認します。
今回はプライベートサブネットのアドレス(192.168.10.0/24のセグメント)を持ったEC2と、セキュリティグループが作成できていれば完成となります。
また、以下はterraformでのAWSリソースの削除方法になります。
削除対象のリソースを確認
terraform plan -destroy
作成したリソースを削除
terraform destroy
リソースを確認
terraform show
Terraformで作成したリソースが消えていれば完了です。
まとめ
次回はterraformを使ったリソース作成の記事を作成したいと思います。