142 lines
5.2 KiB
HCL
142 lines
5.2 KiB
HCL
locals {
|
|
|
|
monteback_routes = [{
|
|
route = cloudfoundry_route.monteback.id
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
module "app_api_gateway" {
|
|
source = "github.com/philips-internal/terraform-api-gateway?ref=v0.0.32"
|
|
|
|
api_gateway_image = { "image_name" : "edi-foundation-envoy-gateway", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.envoy_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
|
|
oauth2_proxy_image = { "image_name" : "edi-foundation-oauth2-proxy", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.oauth_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
|
|
authenticator_service_image = { "image_name" : "edi-foundation-apigateway-tokenauthenticator", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.authenticator_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
|
|
tokenexchange_broker_image = { "image_name" : "edi-foundation-iam-tokenexchange-broker", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.tokenexchange_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
|
|
api_gateway_routes = [
|
|
{
|
|
hostname = "${data.cloudfoundry_space.cf_space.name}-api-gateway"
|
|
port = 8080
|
|
},
|
|
{
|
|
hostname = "org1-${data.cloudfoundry_space.cf_space.name}-api-gateway"
|
|
port = 8080
|
|
},
|
|
{
|
|
hostname = "invalidorg-${data.cloudfoundry_space.cf_space.name}-api-gateway"
|
|
port = 8080
|
|
}
|
|
]
|
|
envoy_config = base64encode(file(var.config_file_location))
|
|
space = var.cf_space
|
|
proposition_id = var.proposition_id
|
|
cf_org = var.cf_org
|
|
domain = var.cf_domain
|
|
api_gateway_environment = {
|
|
"MOUNTEBANK_ENDPOINT" = "${cloudfoundry_route.monteback.endpoint}"
|
|
"MOUNTEBANK_PORT" = 2525
|
|
"MONTEBANKSERVICEDOWNTEST" = "${cloudfoundry_route.montebankservicedowntest.endpoint}"
|
|
"ORG_ID_SOURCE" = var.org_id_source
|
|
"ORG_ID_MAPPING" = "{[\"org1-${data.cloudfoundry_space.cf_space.name}-api-gateway\"] = \"51e2503f-c1df-430d-a1ce-2524fa796cda\"}"
|
|
"TimeoutInSeconds" = "0.750s"
|
|
"ENVOY_PORT" = 8080
|
|
}
|
|
oauth2_environment = {
|
|
"OAUTH2_PROXY_COOKIE_REFRESH" = "0h0m25s"
|
|
"OAUTH2_PROXY_SESSION_STORE_TYPE" = "redis"
|
|
"OAUTH2_PROXY_REDIS_CONNECTION_URL" = "redis://:${var.redis_credentials["password"]}@${var.redis_credentials["hostname"]}:${var.redis_credentials["port"]}"
|
|
}
|
|
logout_redirect_url = "https://${data.cloudfoundry_space.cf_space.name}-api-gateway.${var.cf_domain}"
|
|
log_service_id = var.logdrainer
|
|
redis_service_id = var.oauth_proxy_redis
|
|
vault_service_id = cloudfoundry_service_instance.gateway_vault.id
|
|
use_authenticator = "true"
|
|
use_tokenexchangebroker = "true"
|
|
}
|
|
|
|
|
|
|
|
|
|
resource "cloudfoundry_network_policy" "monteback_a" {
|
|
policy {
|
|
source_app = module.app_api_gateway.api_gw_application_id
|
|
destination_app = cloudfoundry_app.monteback.id
|
|
port = 2525
|
|
}
|
|
}
|
|
|
|
resource "cloudfoundry_network_policy" "monteback_b" {
|
|
policy {
|
|
source_app = module.app_api_gateway.api_gw_application_id
|
|
destination_app = cloudfoundry_app.monteback.id
|
|
port = 4545
|
|
}
|
|
}
|
|
|
|
resource "cloudfoundry_network_policy" "monteback_c" {
|
|
policy {
|
|
source_app = module.app_api_gateway.api_gw_application_id
|
|
destination_app = cloudfoundry_app.monteback.id
|
|
port = 4546
|
|
}
|
|
}
|
|
|
|
resource "cloudfoundry_network_policy" "monteback_d" {
|
|
policy {
|
|
source_app = module.app_api_gateway.api_gw_application_id
|
|
destination_app = cloudfoundry_app.monteback.id
|
|
port = 4550
|
|
}
|
|
}
|
|
|
|
resource "cloudfoundry_network_policy" "monteback_FilterService" {
|
|
policy {
|
|
source_app = module.app_api_gateway.api_gw_application_id
|
|
destination_app = cloudfoundry_app.monteback.id
|
|
port = 4547
|
|
}
|
|
}
|
|
|
|
resource "cloudfoundry_app" "monteback" {
|
|
space = data.cloudfoundry_space.cf_space.id
|
|
name = "monteback"
|
|
docker_image = "${var.DOCKER_REGISTRY}/mountebank:latest"
|
|
instances = 1
|
|
memory = 300
|
|
disk_quota = 512
|
|
command = "node bin/mb --allowInjection"
|
|
docker_credentials = {
|
|
username = var.cf_deploy_user
|
|
password = var.cf_deploy_password
|
|
}
|
|
dynamic "routes" {
|
|
for_each = local.monteback_routes
|
|
|
|
content {
|
|
|
|
route = routes.value.route
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
resource "cloudfoundry_route" "monteback" {
|
|
domain = data.cloudfoundry_domain.internal.id
|
|
space = data.cloudfoundry_space.cf_space.id
|
|
hostname = "montebanktest-${data.cloudfoundry_space.cf_space.name}"
|
|
|
|
}
|
|
|
|
resource "cloudfoundry_route" "montebankservicedowntest" {
|
|
domain = data.cloudfoundry_domain.internal.id
|
|
space = data.cloudfoundry_space.cf_space.id
|
|
hostname = "montebankservicedowntest-${data.cloudfoundry_space.cf_space.name}"
|
|
|
|
}
|
|
resource "cloudfoundry_service_instance" "gateway_vault" {
|
|
name = "gateway_vault"
|
|
space = data.cloudfoundry_space.cf_space.id
|
|
service_plan = data.cloudfoundry_service.vault.service_plans["vault-us-east-1"]
|
|
} |