Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 29 additions & 7 deletions terraform/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,22 @@ provider "aws" {

data "aws_caller_identity" "current" {}

data "aws_efs_file_system" "input" {
creation_token = "${var.prefix}-input"
}

data "aws_efs_file_system" "flpe" {
creation_token = "${var.prefix}-flpe"
}

data "aws_iam_role" "job" {
name = "${var.prefix}-batch-job-role"
}

data "aws_iam_role" "execution" {
name = "${var.prefix}-ecs-exe-task-role"
}

locals {
account_id = sensitive(data.aws_caller_identity.current.account_id)
default_tags = length(var.default_tags) == 0 ? {
Expand All @@ -29,10 +45,16 @@ locals {
}

module "confluence-metroman" {
source = "./modules/metroman"
app_name = var.app_name
app_version = var.app_version
aws_region = var.aws_region
environment = var.environment
prefix = var.prefix
}
source = "./modules/metroman"
app_name = var.app_name
app_version = var.app_version
aws_region = var.aws_region
efs_file_system_ids = {
input = data.aws_efs_file_system.input.file_system_id
flpe = data.aws_efs_file_system.flpe.file_system_id
}
environment = var.environment
iam_execution_role_arn = data.aws_iam_role.execution.arn
iam_job_role_arn = data.aws_iam_role.job.arn
prefix = var.prefix
}
99 changes: 51 additions & 48 deletions terraform/modules/metroman/confluence-metroman.tf
Original file line number Diff line number Diff line change
@@ -1,54 +1,57 @@
# Job Definition
resource "aws_batch_job_definition" "generate_batch_jd_metroman" {
name = "${var.prefix}-metroman"
type = "container"
container_properties = <<CONTAINER_PROPERTIES
{
"image": "${local.account_id}.dkr.ecr.us-west-2.amazonaws.com/${var.prefix}-metroman",
"executionRoleArn": "${data.aws_iam_role.exe_role.arn}",
"jobRoleArn": "${data.aws_iam_role.job_role.arn}",
"fargatePlatformConfiguration": { "platformVersion": "LATEST" },
"logConfiguration": {
"logDriver" : "awslogs",
"options": {
"awslogs-group" : "${data.aws_cloudwatch_log_group.cw_log_group.name}"
name = "${var.prefix}-metroman"
type = "container"
platform_capabilities = ["FARGATE"]
propagate_tags = true
tags = { "job_definition": "${var.prefix}-metroman" }

container_properties = jsonencode({
image = "${local.account_id}.dkr.ecr.us-west-2.amazonaws.com/${var.prefix}-metroman:${var.image_tag}"
executionRoleArn = var.iam_execution_role_arn
jobRoleArn = var.iam_job_role_arn
fargatePlatformConfiguration = {
platformVersion = "LATEST"
}
logConfiguration = {
logDriver = "awslogs"
options = {
awslogs-group = aws_cloudwatch_log_group.cw_log_group.name
}
},
"resourceRequirements": [
{"type": "MEMORY", "value": "8192"},
{"type": "VCPU", "value": "4"}
],
"mountPoints": [
{
"sourceVolume": "input",
"containerPath": "/mnt/data/input",
"readOnly": true
},
{
"sourceVolume": "flpe",
"containerPath": "/mnt/data/output",
"readOnly": false
}
resourceRequirements = [{
type = "MEMORY"
value = "8192"
}, {
type = "VCPU",
value = "4"
}]
mountPoints = [{
sourceVolume = "input",
containerPath = "/mnt/data/input"
readOnly = false
}, {
sourceVolume = "flpe"
containerPath = "/mnt/data/output"
readOnly = false
}]
volumes = [{
name = "input"
efsVolumeConfiguration = {
fileSystemId = var.efs_file_system_ids["input"]
rootDirectory = "/"
}
],
"volumes": [
{
"name": "input",
"efsVolumeConfiguration": {
"fileSystemId": "${data.aws_efs_file_system.aws_efs_input.file_system_id}",
"rootDirectory": "/"
}
},
{
"name": "flpe",
"efsVolumeConfiguration": {
"fileSystemId": "${data.aws_efs_file_system.aws_efs_flpe.file_system_id}",
"rootDirectory": "/metroman"
}
}, {
name = "flpe"
efsVolumeConfiguration = {
fileSystemId = var.efs_file_system_ids["flpe"]
rootDirectory = "/metroman"
}
]
}
CONTAINER_PROPERTIES
platform_capabilities = ["FARGATE"]
propagate_tags = true
tags = { "job_definition": "${var.prefix}-metroman" }
}]
})
}

# Log group
resource "aws_cloudwatch_log_group" "cw_log_group" {
name = "/aws/batch/job/${var.prefix}-metroman/"
}
27 changes: 1 addition & 26 deletions terraform/modules/metroman/main.tf
Original file line number Diff line number Diff line change
@@ -1,32 +1,7 @@
# Data sources
data "aws_caller_identity" "current" {}

data "aws_cloudwatch_log_group" "cw_log_group" {
name = "/aws/batch/job/${var.prefix}-metroman/"
}

data "aws_efs_file_system" "aws_efs_input" {
creation_token = "${var.prefix}-input"
}

data "aws_efs_file_system" "aws_efs_flpe" {
creation_token = "${var.prefix}-flpe"
}

data "aws_iam_role" "job_role" {
name = "${var.prefix}-batch-job-role"
}

data "aws_iam_role" "exe_role" {
name = "${var.prefix}-ecs-exe-task-role"
}

# Local variables
locals {
account_id = data.aws_caller_identity.current.account_id
default_tags = length(var.default_tags) == 0 ? {
application : var.app_name,
environment : lower(var.environment),
version : var.app_version
} : var.default_tags
}
}
25 changes: 23 additions & 2 deletions terraform/modules/metroman/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,36 @@ variable "aws_region" {
}

variable "default_tags" {
type = map(string)
default = {}
type = map(string)
default = {}
}

variable "efs_file_system_ids" {
type = map(string)
description = "Map of EFS file system ids to pass to the container definition"
}

variable "environment" {
type = string
description = "The environment in which to deploy to"
}

variable "iam_execution_role_arn" {
type = string
description = "The IAM ARN of the execution role"
}

variable "iam_job_role_arn" {
type = string
description = "The IAM ARN of the job role"
}

variable "image_tag" {
type = string
description = "The container image tag to utilize"
default = "latest"
}

variable "prefix" {
type = string
description = "Prefix to add to all AWS resources as a unique identifier"
Expand Down
4 changes: 2 additions & 2 deletions terraform/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ variable "aws_region" {
}

variable "default_tags" {
type = map(string)
default = {}
type = map(string)
default = {}
}

variable "environment" {
Expand Down