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