provisioning-2/modules/ec2/main.tf

99 lines
3.1 KiB
HCL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ---------------------------
# EC2 Keypairの設定
# ---------------------------
# 秘密鍵のアルゴリズム設定
resource "tls_private_key" "private_key" {
algorithm = "RSA"
rsa_bits = 2048
}
# 生成するkeypair秘密鍵と公開鍵のパスを指定
locals {
public_key_file = "${path.root}/.keypair/${var.name_prefix}${var.env}-${var.key_name}.id_rsa.pub"
private_key_file = "${path.root}/.keypair/${var.name_prefix}${var.env}-${var.key_name}.id_rsa"
}
# 鍵の生成
resource "local_file" "private_key_pem" {
filename = local.private_key_file
content = tls_private_key.private_key.private_key_pem
}
# 公開鍵をAWSのkeypairにインポート
resource "aws_key_pair" "key_pair" {
key_name = "${var.name_prefix}${var.env}-${var.key_name}"
public_key = tls_private_key.private_key.public_key_openssh
}
# ---------------------------
# EC2 インスタンス
# ---------------------------
# Amazon Linux2023のAMIを取得
data "aws_ssm_parameter" "amazon_linux2023" {
name = "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64"
}
# ネットワークインターフェイスの作成
resource "aws_network_interface" "ni_web1" {
subnet_id = var.aws_subnet_public_1a_id
private_ips = [var.web1_private_ip]
# セキュリティグループの指定
security_groups = [var.ec2_sg_id]
tags = {
Name = "${var.name_prefix}${var.env}-${var.ni_web1_name}"
}
}
resource "aws_network_interface" "ni_web2" {
subnet_id = var.aws_subnet_public_1c_id
private_ips = [var.web2_private_ip]
# セキュリティグループの指定
security_groups = [var.ec2_sg_id]
tags = {
Name = "${var.name_prefix}${var.env}-${var.ni_web2_name}"
}
}
# EC2インスタンスの作成
resource "aws_instance" "ec2_web1" {
# AMIの指定
ami = data.aws_ssm_parameter.amazon_linux2023.value
# インスタンスタイプの指定
instance_type = "t3.micro"
# アベイラビリティーゾーンの指定
availability_zone = "ap-northeast-1a"
# ネットワークインターフェイスの指定
network_interface {
network_interface_id = aws_network_interface.ni_web1.id
device_index = 0
}
# キーペアの指定
key_name = aws_key_pair.key_pair.key_name
# user dataの指定Wordpressのインストール
user_data = file("${path.module}/install_wordpress.sh")
tags = {
Name = "${var.name_prefix}${var.env}-${var.ec2_web1_name}"
}
}
resource "aws_instance" "ec2_web2" {
# AMIの指定
ami = data.aws_ssm_parameter.amazon_linux2023.value
# インスタンスタイプの指定
instance_type = "t3.micro"
# アベイラビリティーゾーンの指定
availability_zone = "ap-northeast-1c"
# ネットワークインターフェイスの指定
network_interface {
network_interface_id = aws_network_interface.ni_web2.id
device_index = 0
}
# キーペアの指定
key_name = aws_key_pair.key_pair.key_name
# user dataの指定Wordpressのインストール
user_data = file("${path.module}/install_wordpress.sh")
tags = {
Name = "${var.name_prefix}${var.env}-${var.ec2_web2_name}"
}
}