From 1801504fbbfbd43a58990ca318a4851e8266d820 Mon Sep 17 00:00:00 2001 From: Josh Wong <166488409+joshwong-cs@users.noreply.github.com> Date: Sun, 6 Oct 2024 11:33:39 +0100 Subject: [PATCH] feat: terraform vscode --- infra/ecr.tf | 5 + infra/ecs_main_admin.tf | 3 + .../ecs_main_admin_container_definitions.json | 2096 +++++++++-------- infra/ecs_main_gitlab.tf | 1 + infra/ecs_notebooks_vscode.tf | 69 + 5 files changed, 1168 insertions(+), 1006 deletions(-) create mode 100644 infra/ecs_notebooks_vscode.tf diff --git a/infra/ecr.tf b/infra/ecr.tf index 5653529..283bd80 100644 --- a/infra/ecr.tf +++ b/infra/ecr.tf @@ -30,6 +30,10 @@ resource "aws_ecr_repository" "theia" { name = "${var.prefix}-theia" } +resource "aws_ecr_repository" "vscode" { + name = "${var.prefix}-vscode" +} + resource "aws_ecr_repository" "s3sync" { name = "${var.prefix}-s3sync" } @@ -268,6 +272,7 @@ data "aws_iam_policy_document" "aws_vpc_endpoint_ecr" { "${aws_ecr_repository.pgadmin.arn}", "${aws_ecr_repository.remotedesktop.arn}", "${aws_ecr_repository.theia.arn}", + "${aws_ecr_repository.vscode.arn}", "${aws_ecr_repository.s3sync.arn}", "${aws_ecr_repository.metrics.arn}", "${aws_ecr_repository.sentryproxy.arn}", diff --git a/infra/ecs_main_admin.tf b/infra/ecs_main_admin.tf index f798adc..0ff12c2 100644 --- a/infra/ecs_main_admin.tf +++ b/infra/ecs_main_admin.tf @@ -59,6 +59,7 @@ locals { fargate_spawner__pgadmin_task_definition_arn = "${aws_ecs_task_definition.pgadmin.family}" fargate_spawner__remotedesktop_task_definition_arn = "${aws_ecs_task_definition.remotedesktop.family}" fargate_spawner__theia_task_definition_arn = "${aws_ecs_task_definition.theia.family}" + fargate_spawner__vscode_task_definition_arn = "${aws_ecs_task_definition.vscode.family}" fargate_spawner__superset_task_definition_arn = "${aws_ecs_task_definition.superset.family}" fargate_spawner__user_provided_task_definition_arn = "${aws_ecs_task_definition.user_provided.family}" @@ -437,6 +438,8 @@ data "aws_iam_policy_document" "admin_run_tasks" { "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.remotedesktop.family}-*", "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.theia.family}", "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.theia.family}-*", + "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.vscode.family}", + "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.vscode.family}-*", "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.superset.family}", "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.superset.family}-*", "arn:aws:ecs:${data.aws_region.aws_region.name}:${data.aws_caller_identity.aws_caller_identity.account_id}:task-definition/${aws_ecs_task_definition.user_provided.family}-*", diff --git a/infra/ecs_main_admin_container_definitions.json b/infra/ecs_main_admin_container_definitions.json index e38f97e..27db4e0 100644 --- a/infra/ecs_main_admin_container_definitions.json +++ b/infra/ecs_main_admin_container_definitions.json @@ -3,1020 +3,1104 @@ "command": ${container_command}, "cpu": ${container_cpu}, "environment": [ - { - "name": "ADMIN_DB__HOST", - "value": "${admin_db__host}" - }, - { - "name": "ADMIN_DB__NAME", - "value": "${admin_db__name}" - }, - { - "name": "ADMIN_DB__PASSWORD", - "value": "${admin_db__password}" - }, - { - "name": "ADMIN_DB__PORT", - "value": "${admin_db__port}" - }, - { - "name": "ADMIN_DB__USER", - "value": "${admin_db__user}" - }, - { - "name": "DATA_DB__datasets_1__HOST", - "value": "${datasets_db__host}" - }, - { - "name": "DATA_DB__datasets_1__NAME", - "value": "${datasets_db__name}" - }, - { - "name": "DATA_DB__datasets_1__PASSWORD", - "value": "${datasets_db__password}" - }, - { - "name": "DATA_DB__datasets_1__PORT", - "value": "${datasets_db__port}" - }, - { - "name": "DATA_DB__datasets_1__USER", - "value": "${datasets_db__user}" - }, - { - "name": "DATASETS_DB_INSTANCE_ID", - "value": "${datasets_db__instance_id}" - }, - { - "name": "EXPLORER_CONNECTIONS", - "value": "{\"datasets_1\":\"datasets_1\"}" - }, - { - "name": "EXPLORER_DEFAULT_CONNECTION", - "value": "datasets_1" - }, - { - "name": "ARANGO_DB__HOST", - "value": "${arango_db__host}" - }, - { - "name": "ARANGO_DB__PORT", - "value": "${arango_db__port}" - }, - { - "name": "ARANGO_DB__USER", - "value": "root" - }, - { - "name": "ARANGO_DB__PASSWORD", - "value": "${arango_db__password}" - }, - { - "name": "ARANGO_DB__PROTOCOL", - "value": "https" - }, - { - "name": "ALLOWED_HOSTS__1", - "value": "${root_domain}" - }, - { - "name": "ALLOWED_HOSTS__2", - "value": ".${root_domain}" - }, - { - "name": "EFS_ID", - "value": "${efs_id}" - }, - { - "name": "S3_POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" - }, - { - "name": "S3_ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" - }, - { - "name": "S3_PERMISSIONS_BOUNDARY", - "value": "${notebook_task_role__permissions_boundary_arn}" - }, - { - "name": "S3_ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" - }, - { - "name": "S3_POLICY_NAME", - "value": "${notebook_task_role__policy_name}" - }, - { - "name": "S3_PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" - }, - { - "name": "S3_NOTEBOOKS_BUCKET_ARN", - "value": "${notebook_task_role__s3_bucket_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__1__HOST_BASENAME", - "value": "jupyterlab" - }, - { - "name": "APPLICATION_TEMPLATES__1__NICE_NAME", - "value": "JupyterLab" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER", - "value": "FARGATE" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_TIME", - "value": "120" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__1", - "value": "jupyter" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__2", - "value": "lab" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__3", - "value": "--config=/etc/jupyter/jupyter_notebook_config.py" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__4", - "value": "--NotebookApp.token=''" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__5", - "value": "--NotebookApp.ip='0.0.0.0'" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__6", - "value": "--NotebookApp.allow_remote_access=True" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__7", - "value": "--NotebookApp.port=8888" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__task_definition_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__ENV__DUMMY", - "value": "value" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__PORT", - "value": "8888" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" - }, - { - "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" - }, - { - "name": "APPLICATION_TEMPLATES__2__HOST_BASENAME", - "value": "rstudio" - }, - { - "name": "APPLICATION_TEMPLATES__2__NICE_NAME", - "value": "RStudio (R version 3)" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER", - "value": "FARGATE" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_TIME", - "value": "120" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__rstudio_task_definition_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ENV__DISABLE_AUTH", - "value": "true" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ENV__USERID", - "value": "4357" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ENV__GROUPID", - "value": "4357" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__PORT", - "value": "8888" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" - }, - { - "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" - }, - { - "name": "APPLICATION_TEMPLATES__3__HOST_BASENAME", - "value": "pgadmin" - }, - { - "name": "APPLICATION_TEMPLATES__3__NICE_NAME", - "value": "pgAdmin" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER", - "value": "FARGATE" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_TIME", - "value": "120" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__pgadmin_task_definition_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__ENV__DISABLE_AUTH", - "value": "true" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__PORT", - "value": "8888" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" - }, - { - "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" - }, - { - "name": "APPLICATION_TEMPLATES__5__HOST_BASENAME", - "value": "jupyterlabpython" - }, - { - "name": "APPLICATION_TEMPLATES__5__NICE_NAME", - "value": "JupyterLab Python" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER", - "value": "FARGATE" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_TIME", - "value": "120" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__jupyterlabpython_task_definition_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__PORT", - "value": "8888" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" - }, - { - "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" - }, -{ - "name": "APPLICATION_TEMPLATES__9__HOST_BASENAME", - "value": "remotedesktop" -}, -{ - "name": "APPLICATION_TEMPLATES__9__NICE_NAME", - "value": "Remote desktop" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER", - "value": "FARGATE" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_TIME", - "value": "120" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__remotedesktop_task_definition_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__ENV__DUMMY", - "value": "value" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__PORT", - "value": "8888" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" -}, -{ - "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" -}, -{ - "name": "APPLICATION_TEMPLATES__10__HOST_BASENAME", - "value": "theia" -}, -{ - "name": "APPLICATION_TEMPLATES__10__NICE_NAME", - "value": "Theia" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER", - "value": "FARGATE" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_TIME", - "value": "120" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__theia_task_definition_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__ENV__DUMMY", - "value": "value" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__PORT", - "value": "8888" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" -}, -{ - "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__HOST_BASENAME", - "value": "superset" -}, -{ - "name": "APPLICATION_TEMPLATES__11__NICE_NAME", - "value": "Superset" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER", - "value": "FARGATE" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_TIME", - "value": "120" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__superset_task_definition_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__ENV__DUMMY", - "value": "value" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__PORT", - "value": "8888" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" -}, -{ - "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" -}, -{ - "name": "APPLICATION_TEMPLATES__12__HOST_BASENAME", - "value": "rstudio-rv4" -}, -{ - "name": "APPLICATION_TEMPLATES__12__NICE_NAME", - "value": "RStudio (R version 4)" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER", - "value": "FARGATE" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_TIME", - "value": "120" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__DEFINITION_ARN", - "value": "${fargate_spawner__rstudio_rv4_task_definition_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__CONTAINER_NAME", - "value": "jupyterhub-notebook" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__ENV__DUMMY", - "value": "value" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__PORT", - "value": "8888" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__ROLE_PREFIX", - "value": "${notebook_task_role__role_prefix}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${notebook_task_role__policy_document_template_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_SYNC", - "value": "true" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_REGION", - "value": "eu-west-2" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_BUCKET", - "value": "${notebooks_bucket}" -}, -{ - "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__PLATFORM_VERSION", - "value": "1.4.0" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__ECR_REPOSITORY_NAME", - "value": "${fargate_spawner__user_provided_ecr_repository__name}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__POLICY_NAME", - "value": "${notebook_task_role__policy_name}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__CLUSTER_NAME", - "value": "${fargate_spawner__task_custer_name}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__DEFINITION_ARN", - "value": "${fargate_spawner__user_provided_task_definition_arn}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__CONTAINER_NAME", - "value": "user-provided" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__PORT", - "value": "8888" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", - "value": "${notebook_task_role__assume_role_policy_document_base64}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__POLICY_DOCUMENT_TEMPLATE_BASE64", - "value": "${fargate_spawner__user_provided_task_role__policy_document_template_base64}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__PERMISSIONS_BOUNDARY_ARN", - "value": "${notebook_task_role__permissions_boundary_arn}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__SECURITY_GROUPS__1", - "value": "${fargate_spawner__task_security_group}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__SUBNETS__1", - "value": "${fargate_spawner__task_subnet}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_SYNC", - "value": "False" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_HOST", - "value": "s3-eu-west-2.amazonaws.com" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_BUCKET", - "value": "${notebooks_bucket}" -}, -{ - "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_REGION", - "value": "eu-west-2" -}, - { - "name": "APPLICATION_ROOT_DOMAIN", - "value": "${root_domain}" - }, - { - "name": "SUPERSET_ROOT", - "value": "${superset_root}" - }, - { - "name": "SUPERSET_DW_USER_USERNAME", - "value": "${superset_dw_user_username}" - }, - { - "name": "SUPERSET_DW_USER_PASSWORD", - "value": "${superset_dw_user_password}" - }, - { - "name": "APPSTREAM_URL", - "value": "${appstream_url}" - }, - { - "name": "AUTHBROKER_CLIENT_ID", - "value": "${authbroker_client_id}" - }, - { - "name": "AUTHBROKER_CLIENT_SECRET", - "value": "${authbroker_client_secret}" - }, - { - "name": "AUTHBROKER_URL", - "value": "${authbroker_url}" - }, - ${environment} - { - "name": "NOTEBOOKS_BUCKET", - "value": "${notebooks_bucket}" - }, - { - "name": "REDIS_URL", - "value": "${redis_url}" - }, - { - "name": "SECRET_KEY", - "value": "${secret_key}" - }, - { - "name": "SUPPORT_URL", - "value": "${support_url}" - }, - { - "name": "UPLOADS_BUCKET", - "value": "${uploads_bucket}" - }, - { - "name": "MIRROR_REMOTE_ROOT", - "value": "${mirror_remote_root}" - }, - { - "name": "ZENDESK_EMAIL", - "value": "${zendesk_email}" - }, - { - "name": "ZENDESK_SUBDOMAIN", - "value": "${zendesk_subdomain}" - }, - { - "name": "ZENDESK_TOKEN", - "value": "${zendesk_token}" - }, - { - "name": "ZENDESK_SERVICE_FIELD_ID", - "value": "${zendesk_service_field_id}" - }, - { - "name": "ZENDESK_SERVICE_FIELD_VALUE", - "value": "${zendesk_service_field_value}" - }, - { - "name": "QUICKSIGHT_NAMESPACE", - "value": "${quicksight_namespace}" - }, - { - "name": "QUICKSIGHT_USER_REGION", - "value": "${quicksight_user_region}" - }, - { - "name": "QUICKSIGHT_VPC_ARN", - "value": "${quicksight_vpc_arn}" - }, - { - "name": "QUICKSIGHT_DASHBOARD_GROUP", - "value": "${quicksight_dashboard_group}" - }, - { - "name": "QUICKSIGHT_AUTHOR_CUSTOM_PERMISSIONS", - "value": "${quicksight_author_custom_permissions}" - }, - { - "name": "QUICKSIGHT_AUTHOR_IAM_ARN", - "value": "${quicksight_author_iam_arn}" - }, - { - "name": "QUICKSIGHT_SSO_URL", - "value": "${quicksight_sso_url}" - }, - { - "name": "QUICKSIGHT_DASHBOARD_EMBEDDING_ROLE_ARN", - "value": "${admin_dashboard_embedding_role_arn}" - }, - { - "name": "PROMETHEUS_DOMAIN", - "value": "${prometheus_domain}" - }, - { - "name": "METRICS_SERVICE_DISCOVERY_BASIC_AUTH_USER", - "value": "${metrics_service_discovery_basic_auth_user}" - }, { + ${environment} + { + "name": "ADMIN_DB__HOST", + "value": "${admin_db__host}" + }, + { + "name": "ADMIN_DB__NAME", + "value": "${admin_db__name}" + }, + { + "name": "ADMIN_DB__PASSWORD", + "value": "${admin_db__password}" + }, + { + "name": "ADMIN_DB__PORT", + "value": "${admin_db__port}" + }, + { + "name": "ADMIN_DB__USER", + "value": "${admin_db__user}" + }, + { + "name": "DATA_DB__datasets_1__HOST", + "value": "${datasets_db__host}" + }, + { + "name": "DATA_DB__datasets_1__NAME", + "value": "${datasets_db__name}" + }, + { + "name": "DATA_DB__datasets_1__PASSWORD", + "value": "${datasets_db__password}" + }, + { + "name": "DATA_DB__datasets_1__PORT", + "value": "${datasets_db__port}" + }, + { + "name": "DATA_DB__datasets_1__USER", + "value": "${datasets_db__user}" + }, + { + "name": "DATASETS_DB_INSTANCE_ID", + "value": "${datasets_db__instance_id}" + }, + { + "name": "EXPLORER_CONNECTIONS", + "value": "{\"datasets_1\":\"datasets_1\"}" + }, + { + "name": "EXPLORER_DEFAULT_CONNECTION", + "value": "datasets_1" + }, + { + "name": "ARANGO_DB__HOST", + "value": "${arango_db__host}" + }, + { + "name": "ARANGO_DB__PORT", + "value": "${arango_db__port}" + }, + { + "name": "ARANGO_DB__USER", + "value": "root" + }, + { + "name": "ARANGO_DB__PASSWORD", + "value": "${arango_db__password}" + }, + { + "name": "ARANGO_DB__PROTOCOL", + "value": "https" + }, + { + "name": "ALLOWED_HOSTS__1", + "value": "${root_domain}" + }, + { + "name": "ALLOWED_HOSTS__2", + "value": ".${root_domain}" + }, + { + "name": "EFS_ID", + "value": "${efs_id}" + }, + { + "name": "S3_POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "S3_ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "S3_PERMISSIONS_BOUNDARY", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "S3_ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "S3_POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "S3_PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "S3_NOTEBOOKS_BUCKET_ARN", + "value": "${notebook_task_role__s3_bucket_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__1__HOST_BASENAME", + "value": "jupyterlab" + }, + { + "name": "APPLICATION_TEMPLATES__1__NICE_NAME", + "value": "JupyterLab" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__1", + "value": "jupyter" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__2", + "value": "lab" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__3", + "value": "--config=/etc/jupyter/jupyter_notebook_config.py" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__4", + "value": "--NotebookApp.token=''" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__5", + "value": "--NotebookApp.ip='0.0.0.0'" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__6", + "value": "--NotebookApp.allow_remote_access=True" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CMD__7", + "value": "--NotebookApp.port=8888" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__ENV__DUMMY", + "value": "value" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__1__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__2__HOST_BASENAME", + "value": "rstudio" + }, + { + "name": "APPLICATION_TEMPLATES__2__NICE_NAME", + "value": "RStudio (R version 3)" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__rstudio_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ENV__DISABLE_AUTH", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ENV__USERID", + "value": "4357" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ENV__GROUPID", + "value": "4357" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__2__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__3__HOST_BASENAME", + "value": "pgadmin" + }, + { + "name": "APPLICATION_TEMPLATES__3__NICE_NAME", + "value": "pgAdmin" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__pgadmin_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__ENV__DISABLE_AUTH", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__3__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__5__HOST_BASENAME", + "value": "jupyterlabpython" + }, + { + "name": "APPLICATION_TEMPLATES__5__NICE_NAME", + "value": "JupyterLab Python" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__jupyterlabpython_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__5__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__9__HOST_BASENAME", + "value": "remotedesktop" + }, + { + "name": "APPLICATION_TEMPLATES__9__NICE_NAME", + "value": "Remote desktop" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__remotedesktop_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__ENV__DUMMY", + "value": "value" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__9__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__10__HOST_BASENAME", + "value": "theia" + }, + { + "name": "APPLICATION_TEMPLATES__10__NICE_NAME", + "value": "Theia" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__theia_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__ENV__DUMMY", + "value": "value" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__10__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__11__HOST_BASENAME", + "value": "superset" + }, + { + "name": "APPLICATION_TEMPLATES__11__NICE_NAME", + "value": "Superset" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__superset_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__ENV__DUMMY", + "value": "value" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__11__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__12__HOST_BASENAME", + "value": "rstudio-rv4" + }, + { + "name": "APPLICATION_TEMPLATES__12__NICE_NAME", + "value": "RStudio (R version 4)" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__rstudio_rv4_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__ENV__DUMMY", + "value": "value" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_TEMPLATES__12__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__13__HOST_BASENAME", + "value": "vscode" + }, + { + "name": "APPLICATION_TEMPLATES__13__NICE_NAME", + "value": "VS Code" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER", + "value": "FARGATE" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_TIME", + "value": "120" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__PLATFORM_VERSION", + "value": "1.4.0" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__DEFINITION_ARN", + "value": "${fargate_spawner__vscode_task_definition_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__CONTAINER_NAME", + "value": "jupyterhub-notebook" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__ENV__DUMMY", + "value": "value" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__ROLE_PREFIX", + "value": "${notebook_task_role__role_prefix}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${notebook_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__S3_SYNC", + "value": "true" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_TEMPLATES__13__SPAWNER_OPTIONS__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__ECR_REPOSITORY_NAME", + "value": "${fargate_spawner__user_provided_ecr_repository__name}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__POLICY_NAME", + "value": "${notebook_task_role__policy_name}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__CLUSTER_NAME", + "value": "${fargate_spawner__task_custer_name}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__DEFINITION_ARN", + "value": "${fargate_spawner__user_provided_task_definition_arn}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__CONTAINER_NAME", + "value": "user-provided" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__PORT", + "value": "8888" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__ASSUME_ROLE_POLICY_DOCUMENT_BASE64", + "value": "${notebook_task_role__assume_role_policy_document_base64}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__POLICY_DOCUMENT_TEMPLATE_BASE64", + "value": "${fargate_spawner__user_provided_task_role__policy_document_template_base64}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__PERMISSIONS_BOUNDARY_ARN", + "value": "${notebook_task_role__permissions_boundary_arn}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__SECURITY_GROUPS__1", + "value": "${fargate_spawner__task_security_group}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__SUBNETS__1", + "value": "${fargate_spawner__task_subnet}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_SYNC", + "value": "False" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_HOST", + "value": "s3-eu-west-2.amazonaws.com" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "APPLICATION_SPAWNER_OPTIONS__FARGATE__VISUALISATION__S3_REGION", + "value": "eu-west-2" + }, + { + "name": "APPLICATION_ROOT_DOMAIN", + "value": "${root_domain}" + }, + { + "name": "SUPERSET_ROOT", + "value": "${superset_root}" + }, + { + "name": "SUPERSET_DW_USER_USERNAME", + "value": "${superset_dw_user_username}" + }, + { + "name": "SUPERSET_DW_USER_PASSWORD", + "value": "${superset_dw_user_password}" + }, + { + "name": "APPSTREAM_URL", + "value": "${appstream_url}" + }, + { + "name": "AUTHBROKER_CLIENT_ID", + "value": "${authbroker_client_id}" + }, + { + "name": "AUTHBROKER_CLIENT_SECRET", + "value": "${authbroker_client_secret}" + }, + { + "name": "AUTHBROKER_URL", + "value": "${authbroker_url}" + }, + { + "name": "NOTEBOOKS_BUCKET", + "value": "${notebooks_bucket}" + }, + { + "name": "REDIS_URL", + "value": "${redis_url}" + }, + { + "name": "SECRET_KEY", + "value": "${secret_key}" + }, + { + "name": "SUPPORT_URL", + "value": "${support_url}" + }, + { + "name": "UPLOADS_BUCKET", + "value": "${uploads_bucket}" + }, + { + "name": "MIRROR_REMOTE_ROOT", + "value": "${mirror_remote_root}" + }, + { + "name": "ZENDESK_EMAIL", + "value": "${zendesk_email}" + }, + { + "name": "ZENDESK_SUBDOMAIN", + "value": "${zendesk_subdomain}" + }, + { + "name": "ZENDESK_TOKEN", + "value": "${zendesk_token}" + }, + { + "name": "ZENDESK_SERVICE_FIELD_ID", + "value": "${zendesk_service_field_id}" + }, + { + "name": "ZENDESK_SERVICE_FIELD_VALUE", + "value": "${zendesk_service_field_value}" + }, + { + "name": "QUICKSIGHT_NAMESPACE", + "value": "${quicksight_namespace}" + }, + { + "name": "QUICKSIGHT_USER_REGION", + "value": "${quicksight_user_region}" + }, + { + "name": "QUICKSIGHT_VPC_ARN", + "value": "${quicksight_vpc_arn}" + }, + { + "name": "QUICKSIGHT_DASHBOARD_GROUP", + "value": "${quicksight_dashboard_group}" + }, + { + "name": "QUICKSIGHT_AUTHOR_CUSTOM_PERMISSIONS", + "value": "${quicksight_author_custom_permissions}" + }, + { + "name": "QUICKSIGHT_AUTHOR_IAM_ARN", + "value": "${quicksight_author_iam_arn}" + }, + { + "name": "QUICKSIGHT_SSO_URL", + "value": "${quicksight_sso_url}" + }, + { + "name": "QUICKSIGHT_DASHBOARD_EMBEDDING_ROLE_ARN", + "value": "${admin_dashboard_embedding_role_arn}" + }, + { + "name": "PROMETHEUS_DOMAIN", + "value": "${prometheus_domain}" + }, + { + "name": "METRICS_SERVICE_DISCOVERY_BASIC_AUTH_USER", + "value": "${metrics_service_discovery_basic_auth_user}" + }, { "name": "METRICS_SERVICE_DISCOVERY_BASIC_AUTH_PASSWORD", "value": "${metrics_service_discovery_basic_auth_password}" - }, { + }, { "name": "GOOGLE_ANALYTICS_SITE_ID", "value": "${google_analytics_site_id}" - }, { + }, { "name": "X_FORWARDED_FOR_TRUSTED_HOPS", "value": "2" - }, { + }, { "name": "VISUALISATION_CLOUDWATCH_LOG_GROUP", "value": "${visualisation_cloudwatch_log_group}" - }, { + }, { "name": "FLOWER_ROOT", "value": "${flower_root}" - }, { + }, { "name": "JWT_PRIVATE_KEY", "value": "${jwt_private_key}" - }, { + }, { "name": "MLFLOW_PORT", "value": "${mlflow_port}" - } + } ], "essential": true, "image": "${container_image}", @@ -1031,14 +1115,14 @@ "mountPoints": [], "name": "${container_name}", "portMappings": [{ - "containerPort": ${container_port}, - "hostPort": ${container_port}, - "protocol": "tcp" + "containerPort": ${container_port}, + "hostPort": ${container_port}, + "protocol": "tcp" }], "ulimits": [{ - "softLimit": 4096, - "hardLimit": 4096, - "name": "nofile" + "softLimit": 4096, + "hardLimit": 4096, + "name": "nofile" }], "volumesFrom": [] } diff --git a/infra/ecs_main_gitlab.tf b/infra/ecs_main_gitlab.tf index 572b30e..2257872 100644 --- a/infra/ecs_main_gitlab.tf +++ b/infra/ecs_main_gitlab.tf @@ -920,6 +920,7 @@ data "aws_iam_policy_document" "gitlab_runner" { "${aws_ecr_repository.visualisation_base.arn}", "${aws_ecr_repository.visualisation_base_r.arn}", "${aws_ecr_repository.visualisation_base_rv4.arn}", + "${aws_ecr_repository.vscode.arn}", "${aws_ecr_repository.theia.arn}", ] } diff --git a/infra/ecs_notebooks_vscode.tf b/infra/ecs_notebooks_vscode.tf new file mode 100644 index 0000000..99df48a --- /dev/null +++ b/infra/ecs_notebooks_vscode.tf @@ -0,0 +1,69 @@ +resource "aws_ecs_task_definition" "vscode" { + family = "${var.prefix}-vscode" + container_definitions = templatefile( + "${path.module}/ecs_notebooks_notebook_container_definitions.json", { + container_image = "${aws_ecr_repository.vscode.repository_url}:master" + container_name = "${local.notebook_container_name}" + + log_group = "${aws_cloudwatch_log_group.notebook.name}" + log_region = "${data.aws_region.aws_region.name}" + + sentry_dsn = "${var.sentry_notebooks_dsn}" + sentry_environment = "${var.sentry_environment}" + + metrics_container_image = "${aws_ecr_repository.metrics.repository_url}:master" + s3sync_container_image = "${aws_ecr_repository.s3sync.repository_url}:master" + + cloudwatch_namespace = "${var.cloudwatch_namespace}" + cloudwatch_region = "${var.cloudwatch_region}" + + home_directory = "/home/coder" + } + ) + execution_role_arn = aws_iam_role.notebook_task_execution.arn + network_mode = "awsvpc" + cpu = local.notebook_container_cpu + memory = local.notebook_container_memory + requires_compatibilities = ["FARGATE"] + + ephemeral_storage { + size_in_gib = 50 + } + + volume { + name = "home_directory" + } + + lifecycle { + ignore_changes = [ + "revision", + ] + } +} + +data "external" "vscode_current_tag" { + program = ["${path.module}/task_definition_tag.sh"] + + query = { + task_family = "${var.prefix}-vscode" + container_name = "${local.notebook_container_name}" + } +} + +data "external" "vscode_metrics_current_tag" { + program = ["${path.module}/task_definition_tag.sh"] + + query = { + task_family = "${var.prefix}-vscode" + container_name = "metrics" + } +} + +data "external" "vscode_s3sync_current_tag" { + program = ["${path.module}/task_definition_tag.sh"] + + query = { + task_family = "${var.prefix}-vscode" + container_name = "s3sync" + } +}