Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
main.tf 6.93 KiB
Newer Older
Gilles Habran's avatar
Gilles Habran committed
# Require TF version to be same as or greater than 0.12.13
terraform {
  required_version = ">=1.3.7"
  backend "s3" {
    bucket         = "d-ew1-ted-ai-terraform"
    key            = "terraform.tfstate"
    region         = "eu-west-1"
    dynamodb_table = "d-ew1-ted-ai-terraform-locks"
    encrypt        = true
  }
}

provider "aws" {
  region = var.region
}

module "bootstrap" {
  source                        = "./modules/bootstrap"
  terraform_s3_bucket_name      = var.terraform_s3_bucket_name
  terraform_dynamodb_table_name = var.terraform_dynamodb_table_name
}

module "storage" {
  source                                        = "./modules/storage"
  s3_input_bucket_name                          = var.s3_input_bucket_name
  s3_data_bucket_name                           = var.s3_data_bucket_name
  s3_curated_bucket_name                        = var.s3_curated_bucket_name
  s3_backup_bucket_name                         = var.s3_backup_bucket_name
  s3_deployment_bucket_name                     = var.s3_deployment_bucket_name
  s3_ml_data_bucket_name                        = var.s3_ml_data_bucket_name
  s3_ml_models_bucket_name                      = var.s3_ml_models_bucket_name
  tags                                          = var.tags
  ssm_buckets_input_id                          = var.ssm_buckets_input_id
  ssm_buckets_curated_id                        = var.ssm_buckets_curated_id
  ssm_buckets_ml_data_id                        = var.ssm_buckets_ml_data_id
  ssm_buckets_backup_id                         = var.ssm_buckets_backup_id
  ssm_buckets_deployment_id                     = var.ssm_buckets_deployment_id
  ssm_s3_input_bucket_readwrite_policy_arn      = var.ssm_s3_input_bucket_readwrite_policy_arn
  ssm_s3_curated_bucket_readwrite_policy_arn    = var.ssm_s3_curated_bucket_readwrite_policy_arn
  ssm_s3_curated_bucket_readonly_policy_arn     = var.ssm_s3_curated_bucket_readonly_policy_arn
  ssm_s3_backup_bucket_readonly_policy_arn      = var.ssm_s3_backup_bucket_readonly_policy_arn
  ssm_s3_deployment_bucket_readwrite_policy_arn = var.ssm_s3_deployment_bucket_readwrite_policy_arn
  iam_policy_prefix                             = var.iam_policy_prefix
  ecr_repository_sagemaker_classifiers_name     = var.ecr_repository_sagemaker_classifiers_name
  ecr_repository_application_name               = var.ecr_repository_application_name
Gilles Habran's avatar
Gilles Habran committed
}

Gilles Habran's avatar
Gilles Habran committed
module "classifiers" {
  source                                                         = "./modules/classifiers"
  tags                                                           = var.tags
  sagemaker_classifier_multi_label_division_classifier_image_url = var.sagemaker_classifier_multi_label_division_classifier_image_url
  sagemaker_classifier_multi_label_division_classifier_model_url = var.sagemaker_classifier_multi_label_division_classifier_model_url
  sagemaker_classifier_multi_label_division_classifier_name      = var.sagemaker_classifier_multi_label_division_classifier_name
  sagemaker_classifiers_execution_role_name_prefix               = var.sagemaker_classifiers_execution_role_name_prefix
  ssm_classifier_endpoint_multi_label_division_classifier_name   = var.ssm_classifier_endpoint_multi_label_division_classifier_name
  applications_dashboard_docker_image_url                        = var.applications_dashboard_repository_url
  iam_policy_prefix                                              = var.iam_policy_prefix
  iam_role_prefix                                                = var.iam_role_prefix
  private_subnet_id_list                                         = var.private_subnet_id_list
  dashboard_port                                                 = var.dashboard_port
  vpc_id                                                         = var.vpc_id
  private_subnet_id_az1_list                                     = var.private_subnet_id_az1_list
  private_subnet_id_az2_list                                     = var.private_subnet_id_az2_list
  sagemaker_classifier_budgetary_value_classifier_image_url      = var.sagemaker_classifier_budgetary_value_classifier_image_url
  sagemaker_classifier_budgetary_value_classifier_model_url      = var.sagemaker_classifier_budgetary_value_classifier_model_url
  sagemaker_classifier_budgetary_value_classifier_name           = var.sagemaker_classifier_budgetary_value_classifier_name
  ssm_classifier_endpoint_budgetary_value_classifier_name        = var.ssm_classifier_endpoint_budgetary_value_classifier_name
module "ingestion" {
  source                                     = "./modules/ingestion"
  tags                                       = var.tags
  iam_policy_prefix                          = var.iam_policy_prefix
  iam_role_prefix                            = var.iam_role_prefix
  private_subnet_id_list                     = var.private_subnet_id_list
  application_ingest_resources_url           = var.application_ingest_resources_url
  ingest_resources_port                      = var.ingest_resources_port
  vpc_id                                     = var.vpc_id
  ssm_ecs_ingest_resources_task_definition   = var.ssm_ecs_ingest_resources_task_definition
  ssm_ecs_ingest_resources_cluster_arn       = var.ssm_ecs_ingest_resources_cluster_arn
  ssm_ecs_ingest_resources_cluster_name      = var.ssm_ecs_ingest_resources_cluster_name
  ssm_ecs_ingest_resources_security_group_id = var.ssm_ecs_ingest_resources_security_group_id
module "glue" {
  source             = "./modules/glue"
  account_id         = var.project_account_id
  region             = var.region
  tags               = var.tags
  glue_database_name = var.glue_database_name
  s3_bucket_map      = module.storage.tedai_storage_s3_buckets_map
  s3_policies_map    = module.storage.tedai_storage_s3_policies_map
  iam_role_prefix    = var.iam_role_prefix
  iam_policy_prefix  = var.iam_policy_prefix
}

module "cloudwatch" {
  source                               = "./modules/cloudwatch"
  account_id                           = var.project_account_id
  region                               = var.region
  iam_policy_prefix                    = var.iam_policy_prefix
  ssm_cloudwatch_logs_write_policy_arn = var.ssm_cloudwatch_logs_write_policy_arn
Gilles Habran's avatar
Gilles Habran committed
}

module "opensearch" {
  source                 = "./modules/opensearch"
  private_subnet_id_list = var.private_subnet_id_list
  vpc_id                 = var.vpc_id
  tags                   = var.tags
Gilles Habran's avatar
Gilles Habran committed
module "db" {
  source                                 = "./modules/db"
  db_identifier                          = var.db_identifier
  db_name                                = var.db_name
  db_instance_class                      = var.db_instance_class
  db_username                            = var.db_username
  db_password_secretsmanager_secret_name = var.db_password_secretsmanager_secret_name
  vpc_id                                 = var.vpc_id
  vpc_cidr                               = var.vpc_cidr
  ssm_prefix                             = var.ssm_prefix
  private_subnet_id_list                 = var.private_subnet_id_list
  tags                                   = var.tags