# --------------------------- # 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}" } }