provider "aws" {
  region = var.aws_region
}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/iam/groups/gdb/core/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

module "aws_accounts_map" {
  source = "git@github.com:theorchard/terraform-aws-accounts-map.git?ref=1.0.0"
}

# Dev groups
module "dev_developers" {
  source = "git@github.com:theorchard/terraform-iam-policies.git//modules/groups?ref=1.5.2"

  group_name                     = "gdb-${var.project_group}-dev-developers"
  users                          = local.dev_developers
  application_families_to_access = []
  iam_roles_to_access = [
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-dev"]}:role/cross_account_user",
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-dev"]}:role/cross_account_qa",
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-dev"]}:role/cross_account_developer",
  ]
}

module "dev_qa" {
  source = "git@github.com:theorchard/terraform-iam-policies.git//modules/groups?ref=1.5.2"

  group_name                     = "gdb-${var.project_group}-dev-qa"
  users                          = local.dev_qa
  application_families_to_access = []
  iam_roles_to_access = [
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-dev"]}:role/cross_account_user",
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-dev"]}:role/cross_account_qa",
  ]
}

module "dev_users" {
  source = "git@github.com:theorchard/terraform-iam-policies.git//modules/groups?ref=1.5.2"

  group_name                     = "gdb-${var.project_group}-dev-user"
  users                          = local.dev_users
  application_families_to_access = []
  iam_roles_to_access = [
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-dev"]}:role/cross_account_user",
  ]
}

# prod groups
module "prod_developers" {
  source = "git@github.com:theorchard/terraform-iam-policies.git//modules/groups?ref=1.5.2"

  group_name                     = "gdb-${var.project_group}-prod-developers"
  users                          = local.prod_developers
  application_families_to_access = []
  iam_roles_to_access = [
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-prod"]}:role/cross_account_user",
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-prod"]}:role/cross_account_qa",
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-prod"]}:role/cross_account_developer",
  ]
}

module "prod_qa" {
  source = "git@github.com:theorchard/terraform-iam-policies.git//modules/groups?ref=1.5.2"

  group_name                     = "gdb-${var.project_group}-prod-qa"
  users                          = local.prod_qa
  application_families_to_access = []
  iam_roles_to_access = [
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-prod"]}:role/cross_account_user",
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-prod"]}:role/cross_account_qa",
  ]
}

module "prod_users" {
  source = "git@github.com:theorchard/terraform-iam-policies.git//modules/groups?ref=1.5.2"

  group_name                     = "gdb-${var.project_group}-prod-users"
  users                          = local.prod_users
  application_families_to_access = []
  iam_roles_to_access = [
    "arn:aws:iam::${module.aws_accounts_map.gdb_accounts["gdb-${var.project_group}-prod"]}:role/cross_account_user",
  ]
}
