👋
TerraformのALBのモジュールファイル
ALBのモジュールファイル
alb.tfファイル
# ALB(Application Load Balancer)のリソースを作成
resource "aws_lb" "this" {
name = var.alb_name # ロードバランサーの名前を設定
internal = false # 内部ロードバランサーかどうか
load_balancer_type = "application" # ロードバランサーのタイプ
security_groups = var.security_group_ids # セキュリティグループのID
subnets = var.subnet_ids # サブネットのID
enable_deletion_protection = false # 削除保護を無効化
enable_http2 = true # HTTP/2を有効化
idle_timeout = 60 # アイドルタイムアウト時間
}
# ターゲットグループのリソースを作成
resource "aws_lb_target_group" "this" {
name = "sample-dev-users-tg" # ターゲットグループの名前
port = 80 # ポート番号
protocol = "HTTP" # プロトコル
vpc_id = var.vpc_id # VPCのID
# ヘルスチェック設定
health_check {
enabled = true # ヘルスチェックを有効化
path = "/" # ヘルスチェックのパス
protocol = "HTTP" # ヘルスチェックのプロトコル
healthy_threshold = 5 # ヘルシーと判定するためのしきい値
unhealthy_threshold = 2 # アンヘルシーと判定するためのしきい値
timeout = 5 # タイムアウト時間
interval = 6 # ヘルスチェックの間隔
matcher = "200" # ヘルスチェックのマッチャー
}
}
variables.tfファイル
# 各種変数の定義
# ALBの名前
variable "alb_name" {
description = "ロードバランサーの名前"
type = string
}
# ALBのスキーム
variable "scheme" {
description = "スキーム(internet-facing または internal)"
type = string
default = "internet-facing"
}
# ALBのIPアドレスタイプ
variable "ip_address_type" {
description = "IPアドレスのタイプ(ipv4)"
type = string
default = "ipv4"
}
# VPCのID
variable "vpc_id" {
description = "VPCのID"
type = string
}
# サブネットのID
variable "subnet_ids" {
description = "サブネットIDのリスト"
type = list(string)
}
# セキュリティグループのID
variable "security_group_ids" {
description = "セキュリティグループIDのリスト"
type = list(string)
}
# SSL証明書のARN
variable "certificate_arn" {
description = "The ARN of the SSL certificate"
default = null
}
output.tfファイル
# 出力変数の定義
# 作成したALBのARNを出力
output "alb_arn" {
description = "作成したALBのARN"
value = aws_lb.this.arn
}
# 作成したターゲットグループのARNを出力
output "target_group_arn" {
description = "作成したターゲットグループのARN"
value = aws_lb_target_group.this.arn
}
providers.tfファイル
# 必要なプロバイダとそのバージョンを定義
terraform {
required_providers {
aws = {
source = "hashicorp/aws" // AWSプロバイダのソース
version = "~> 5.0" // バージョン指定
}
}
}
# AWSプロバイダの設定
provider aws {
region = "ap-northeast-1" // AWSリージョン(東京リージョン)
}
README.mdファイル
ファイル名 | セクション | 説明 |
---|---|---|
alb.tf | resource "aws_lb" "this" | Application Load Balancer(ALB)の設定。セキュリティグループ、サブネット、その他のオプション(HTTP/2、タイムアウトなど)を定義。 |
resource "aws_lb_target_group" "this" | ターゲットグループの設定。ヘルスチェック、プロトコル、ポートなどを定義。 | |
variables.tf | variable "alb_name" | ALBの名前を定義する変数。 |
variable "scheme" | ALBのスキーム(internet-facing またはinternal )を定義する変数。 |
|
variable "ip_address_type" | ALBのIPアドレスタイプ(ipv4)を定義する変数。 | |
variable "vpc_id" | ALBを作成するVPCのIDを定義する変数。 | |
variable "subnet_ids" | ALBに使用するサブネットIDのリストを定義する変数。 | |
variable "security_group_ids" | ALBに割り当てるセキュリティグループIDのリストを定義する変数。 | |
variable "certificate_arn" | SSL/TLS証明書のARNを定義する変数。デフォルトはnull 。 |
|
output.tf | output "alb_arn" | 作成したALBのARNを出力する。 |
output "target_group_arn" | 作成したターゲットグループのARNを出力する。 |
Discussion