|
terraform { |
|
required_providers { |
|
env0 = { |
|
source = "env0/env0" |
|
} |
|
azuread = { |
|
source = "hashicorp/azuread" |
|
} |
|
azurerm = { |
|
source = "hashicorp/azurerm" |
|
version = "3.4.0" |
|
} |
|
} |
|
|
|
required_version = ">= 1.3.0" |
|
} |
|
|
|
locals { |
|
name = replace(lower(var.team-name)," ","-") |
|
|
|
#policy stuff |
|
requires-approval-default = var.requires-approval-default |
|
disable-destroy-environments = var.disable-destroy-environments |
|
include-cost-estimation = var.include-cost-estimate |
|
skip-apply-when-plan-is-empty = var.skip-apply-when-plan-is-empty |
|
skip-redundant-deployments = var.skip-redundant-deployments |
|
|
|
#group stuff |
|
group-admin-name = length(var.group-admin-name) > 0 ? var.group-admin-name : "env0-${local.name}-admin" |
|
group-deployer-name = length(var.group-deployer-name) > 0 ? var.group-deployer-name : "env0-${local.name}-deployer" |
|
planners = var.env0-teams["planner"] |
|
viewers = var.env0-teams["viewer"] |
|
} |
|
|
|
data "azuread_client_config" "current" {} |
|
|
|
data env0_team "everyone" { |
|
name = local.viewers |
|
} |
|
|
|
data env0_team "developers" { |
|
name = local.planners |
|
} |
|
|
|
resource "azuread_group" "admin" { |
|
display_name = local.group-admin-name |
|
owners = [data.azuread_client_config.current.object_id] |
|
security_enabled = true |
|
} |
|
|
|
resource "azuread_group" "deployer" { |
|
display_name = local.group-deployer-name |
|
owners = [data.azuread_client_config.current.object_id] |
|
security_enabled = true |
|
} |
|
|
|
resource "env0_project" "project" { |
|
name = local.name |
|
description = "Project for the ${local.name} service created via Terraform" |
|
} |
|
|
|
resource "env0_project_policy" "policy" { |
|
project_id = env0_project.project.id |
|
|
|
requires_approval_default = local.requires-approval-default |
|
disable_destroy_environments = local.disable-destroy-environments |
|
include_cost_estimation = local.include-cost-estimation |
|
skip_apply_when_plan_is_empty = local.skip-apply-when-plan-is-empty |
|
skip_redundant_deployments = local.skip-redundant-deployments |
|
} |
|
|
|
resource env0_team_project_assignment "everyone" { |
|
project_id = env0_project.project.id |
|
role = "Viewer" |
|
team_id = data.env0_team.everyone.id |
|
} |
|
|
|
resource env0_team_project_assignment "developers" { |
|
project_id = env0_project.project.id |
|
role = "Planner" |
|
team_id = data.env0_team.developers.id |
|
} |
|
|
|
resource "env0_team" "admin" { |
|
name = local.group-admin-name |
|
description = "Admins for the ${local.name} service" |
|
} |
|
|
|
resource env0_team_project_assignment "admin" { |
|
project_id = env0_project.project.id |
|
role = "Admin" |
|
team_id = env0_team.admin.id |
|
} |
|
|
|
resource "env0_team" "deployer" { |
|
name = local.group-deployer-name |
|
description = "Admins for the ${local.name} service" |
|
} |
|
|
|
resource env0_team_project_assignment "deployer" { |
|
project_id = env0_project.project.id |
|
role = "Admin" |
|
team_id = env0_team.deployer.id |
|
} |
|
|
|
resource "env0_configuration_variable" "api-key" { |
|
project_id = env0_project.project.id |
|
name = "DD_API_KEY" |
|
value = "$${azure:dd-api-key@qp-eastus-infra-kv}" |
|
type = "environment" |
|
} |
|
|
|
resource "env0_configuration_variable" "app-key" { |
|
project_id = env0_project.project.id |
|
name = "DD_APP_KEY" |
|
value = "$${azure:dd-app-key@qp-eastus-infra-kv}" |
|
type = "environment" |
|
} |