99 lines
3.1 KiB
HCL
99 lines
3.1 KiB
HCL
# ---------------------------
|
||
# 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}"
|
||
}
|
||
}
|