modules/accelerator/aws-codepipeline/codedeploy.tf (57 lines of code) (raw):
resource "aws_codedeploy_app" "application" {
count = var.target_type == "instance" || var.target_type == "ip"? 1 : 0
name = "${var.repo_name}-${var.region_name}"
compute_platform = var.target_type == "instance" ? "Server" : "ECS"
}
resource "aws_codedeploy_deployment_group" "ec2" {
count = var.target_type == "instance" ? length(var.environments) : 0
app_name = aws_codedeploy_app.application[0].name
deployment_group_name = "${var.repo_name}-${var.region_name}-${var.environments[count.index]}"
service_role_arn = var.codedeploy_role
autoscaling_groups = [var.asg_name[count.index]]
deployment_config_name = var.desired_capacity[count.index] > "1" ? var.conf_one_at_time : var.conf_all_at_once
}
# Deploy to ECS
resource "aws_codedeploy_deployment_group" "ecs" {
count = var.target_type == "ip" ? length(var.environments) : 0
app_name = aws_codedeploy_app.application[0].name
deployment_group_name = "${var.repo_name}-${var.region_name}-${var.environments[count.index]}"
service_role_arn = var.codedeploy_role
deployment_config_name = var.desired_capacity[count.index] > "1" ? "CodeDeployDefault.ECSCanary10Percent5Minutes" : "CodeDeployDefault.ECSAllAtOnce"
auto_rollback_configuration {
enabled = true
events = ["DEPLOYMENT_FAILURE"]
}
ecs_service {
cluster_name = var.ecs_cluster_name
service_name = var.ecs_service_name[count.index]
}
blue_green_deployment_config {
deployment_ready_option {
action_on_timeout = "CONTINUE_DEPLOYMENT"
}
terminate_blue_instances_on_deployment_success {
action = "TERMINATE"
termination_wait_time_in_minutes = var.termination_wait_time_in_minutes
}
}
deployment_style {
deployment_option = "WITH_TRAFFIC_CONTROL"
deployment_type = "BLUE_GREEN"
}
load_balancer_info {
target_group_pair_info {
prod_traffic_route {
listener_arns = [var.main_listener]
}
target_group {
name = var.target_group_blue_name[count.index]
}
target_group {
name = var.target_group_green_name[count.index]
}
}
}
lifecycle {
ignore_changes = all
}
}