Skip to content

Commit 54ad58b

Browse files
author
lycbrian
committed
support blue-green deployment
1 parent 80beea7 commit 54ad58b

File tree

3 files changed

+65
-2
lines changed

3 files changed

+65
-2
lines changed

CHANGELOG.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@
55
### Added
66

77
- Support blue-green deployment
8-
- var: is_enable_blue_green_deployment
9-
- resource: aws_lb_target_group.green
8+
- var:
9+
- is_enable_blue_green_deployment
10+
- green_header_value
11+
- resource:
12+
- aws_lb_target_group.green
13+
- aws_lb_listener_rule.green
14+
1015

1116
## [v1.3.1] - 2025-04-09
1217

main.tf

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,57 @@ resource "aws_lb_listener_rule" "this" {
217217

218218
tags = local.tags
219219
}
220+
221+
/* ------------------------------ Green Listener Rule ----------------------------- */
222+
resource "aws_lb_listener_rule" "green" {
223+
count = local.is_create_target_group && var.is_enable_blue_green_deployment ? 1 : 0
224+
225+
listener_arn = var.alb_listener_arn
226+
priority = var.alb_priority
227+
228+
action {
229+
type = "forward"
230+
target_group_arn = aws_lb_target_group.green[0].arn
231+
}
232+
233+
condition {
234+
path_pattern {
235+
values = var.alb_paths == [] ? ["*"] : var.alb_paths
236+
}
237+
}
238+
239+
dynamic "condition" {
240+
for_each = var.alb_host_header == null ? [] : [true]
241+
content {
242+
host_header {
243+
values = [var.alb_host_header]
244+
}
245+
}
246+
}
247+
248+
dynamic "condition" {
249+
for_each = var.custom_header_token == "" ? [] : [true]
250+
content {
251+
http_header {
252+
http_header_name = "custom-header-token" # Match value within cloudfront module
253+
values = [var.custom_header_token]
254+
}
255+
}
256+
}
257+
258+
dynamic "condition" {
259+
for_each = var.green_header_value == null ? [] : [true]
260+
content {
261+
http_header {
262+
http_header_name = "green-header-name"
263+
values = [var.green_header_value]
264+
}
265+
}
266+
}
267+
268+
tags = local.tags
269+
}
270+
220271
/* -------------------------------------------------------------------------- */
221272
/* Secret */
222273
/* -------------------------------------------------------------------------- */

variables.tf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,3 +315,10 @@ variable "is_enable_blue_green_deployment" {
315315
default = false
316316
}
317317

318+
variable "green_header_value" {
319+
description = "green header value in alb listener rule for blue-green deployment"
320+
type = string
321+
default = "green"
322+
}
323+
324+

0 commit comments

Comments
 (0)