diff --git a/.gitignore b/.gitignore index 428afbd..652affb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ scim.env .idea/ .terraform/ terraform.tfstate -terraform.tfstate.backup \ No newline at end of file +terraform.tfstate.backup +terraform.tfvars \ No newline at end of file diff --git a/aws-terraform/ecs/README.md b/aws-terraform/ecs/README.md index beb2a31..58cf031 100644 --- a/aws-terraform/ecs/README.md +++ b/aws-terraform/ecs/README.md @@ -2,5 +2,24 @@ This document describes deploying the 1Password SCIM bridge to your Amazon Web Service Elastic Container Service using Terraform. +Prerequisites +- DNS Zone +- scimsession file and bearer token + +1. base64url encode your scimsession file and upload it to AWS Secret Manager. Take the arn and save it in terraform.tfvars with the name secret_arn. + +2. Create or choose the zone you want to use and grab the zone id and save it as dns_zone_id in terraform.tfvars. Save the full domain name you want to use as domain_name in terraform.tfvars. + +3. Create the AWS Log Group in CloudWatch where you would like the logs to go. Save the name in terraform.tfvars as aws_logs_group. + +4. Create a region entry in terraform.tfvars for what region you're deploying in. You can omit this if you are using us-east-1. + +Your terraform.tfvars file should look something like this: +domain_name = "scim-bridge.yourcompany.com" +dns_zone_id = "RANDOMLETTERS123" +secret_arn = "arn:aws:secretsmanager:::secret:-BLAH" +aws_logs_group = "/ecs/scim-bridge" + +Now run the following commands: terraform apply -target=aws_acm_certificate.scim_bridge_cert terraform apply \ No newline at end of file diff --git a/aws-terraform/ecs/task-definitions/scim.json b/aws-terraform/ecs/task-definitions/scim.json index 5f94211..426bd5f 100644 --- a/aws-terraform/ecs/task-definitions/scim.json +++ b/aws-terraform/ecs/task-definitions/scim.json @@ -23,13 +23,13 @@ { "name": "OP_LETSENCRYPT_DOMAIN", "value": "" } ], "secrets": [ - {"name": "OP_SESSION", "valueFrom": "arn:aws:secretsmanager:us-east-1:729119775555:secret:ecs/scim-bridge/amanda-HF09CT"} + {"name": "OP_SESSION", "valueFrom": "${secret_arn}"} ], "logConfiguration": { "logDriver": "awslogs", "options": { - "awslogs-group" : "/ecs/scim-bridge", - "awslogs-region": "us-east-1", + "awslogs-group" : "${aws_logs_group}", + "awslogs-region": "${region}", "awslogs-stream-prefix": "ecs-scim" } } @@ -44,8 +44,8 @@ "logConfiguration": { "logDriver": "awslogs", "options": { - "awslogs-group" : "/ecs/scim-bridge", - "awslogs-region": "us-east-1", + "awslogs-group" : "${aws_logs_group}", + "awslogs-region": "${region}", "awslogs-stream-prefix": "ecs-redis" } }, diff --git a/aws-terraform/ecs/terraform.tf b/aws-terraform/ecs/terraform.tf index 1ac528a..9b3d42a 100644 --- a/aws-terraform/ecs/terraform.tf +++ b/aws-terraform/ecs/terraform.tf @@ -9,7 +9,11 @@ resource "aws_ecs_cluster" "scim-bridge" { resource "aws_ecs_task_definition" "scim-bridge" { family = "scim-bridge" - container_definitions = file("task-definitions/scim.json") + container_definitions = templatefile("task-definitions/scim.json", + { secret_arn = var.secret_arn, + aws_logs_group = var.aws_logs_group, + region = var.region + }) requires_compatibilities = ["FARGATE"] # Stating that we are using ECS Fargate network_mode = "awsvpc" # Using awsvpc as our network mode as this is required for Fargate memory = 512 # Specifying the memory our container requires diff --git a/aws-terraform/ecs/terraform.tfvars b/aws-terraform/ecs/terraform.tfvars index 12e9aed..68d5441 100644 --- a/aws-terraform/ecs/terraform.tfvars +++ b/aws-terraform/ecs/terraform.tfvars @@ -1,4 +1,3 @@ domain_name = "scim-bridge-amanda.play.agilebits.net" -region = "us-east-1" dns_zone_id = "Z3V3UMKDNQGJ7A" secret_arn = "arn:aws:secretsmanager:us-east-1:729119775555:secret:ecs/scim-bridge/amanda-HF09CT" \ No newline at end of file diff --git a/aws-terraform/ecs/variables.tf b/aws-terraform/ecs/variables.tf index eaf2ae3..4771e65 100644 --- a/aws-terraform/ecs/variables.tf +++ b/aws-terraform/ecs/variables.tf @@ -4,11 +4,6 @@ variable "region" { default = "us-east-1" } -variable "prefix" { - type = string - description = "" - default = "scim-bridge" -} variable "secret_arn" { type = string @@ -23,7 +18,6 @@ variable "domain_name" { variable "dns_zone_id" { type = string description = "" - default = "Z3V3UMKDNQGJ7A" } variable "aws_logs_group" {