cloud-foundation-fabric/modules/apigee
Julio Castillo 1204b0077e
Merge branch 'master' into mci_gateway
2023-01-31 11:54:31 +00:00
..
README.md In the apigee module now both the /22 and /28 peering IP ranges are passed at instance creation 2023-01-31 11:32:53 +01:00
main.tf In the apigee module now both the /22 and /28 peering IP ranges are passed at instance creation 2023-01-31 11:32:53 +01:00
outputs.tf Added endpoint_attachment_hosts output to apigee module 2022-12-22 15:43:55 +01:00
variables.tf In the apigee module now both the /22 and /28 peering IP ranges are passed at instance creation 2023-01-31 11:32:53 +01:00
versions.tf Bump beta provider to 4.48 2023-01-29 15:50:24 +01:00

README.md

Apigee

This module simplifies the creation of a Apigee resources (organization, environment groups, environment group attachments, environments, instances and instance attachments).

Example

All resources (CLOUD)

module "apigee" {
  source     = "./fabric/modules/apigee"
  project_id = "my-project"
  organization = {
    display_name            = "My Organization"
    description             = "My Organization"
    authorized_network      = "my-vpc"
    runtime_type            = "CLOUD"
    billing_type            = "PAYG"
    database_encryption_key = "123456789"
    analytics_region        = "europe-west1"
  }
  envgroups = {
    test = ["test.example.com"]
    prod = ["prod.example.com"]
  }
  environments = {
    apis-test = {
      display_name    = "APIs test"
      description     = "APIs Test"
      deployment_type = "ARCHIVE"
      api_proxy_type  = "PROGRAMMABLE"
      envgroups       = ["test"]
    }
    apis-prod = {
      display_name    = "APIs prod"
      description     = "APIs prod"
      deployment_type = "PROXY"
      api_proxy_type  = "CONFIGURABLE"
      envgroups       = ["prod"]
      iam = {
        "roles/viewer" = ["group:devops@myorg.com"]
      }
    }
  }
  instances = {
    instance-test-ew1 = {
      region                        = "europe-west1"
      environments                  = ["apis-test"]
      runtime_ip_cidr_range         = "10.0.4.0/22"
      troubleshooting_ip_cidr_range = "10.1.1.0.0/28"
    }
    instance-prod-ew3 = {
      region                        = "europe-west3"
      environments                  = ["apis-prod"]
      runtime_ip_cidr_range         = "10.0.8.0/22"
      troubleshooting_ip_cidr_range = "10.1.16.0/28"
    }
  }
  endpoint_attachments = {
    endpoint-backend-1 = {
      region             = "europe-west1"
      service_attachment = "projects/my-project-1/serviceAttachments/gkebackend1"
    }
    endpoint-backend-2 = {
      region             = "europe-west1"
      service_attachment = "projects/my-project-2/serviceAttachments/gkebackend2"
    }
  }
}
# tftest modules=1 resources=14

All resources (HYBRID control plane)

module "apigee" {
  source     = "./fabric/modules/apigee"
  project_id = "my-project"
  organization = {
    display_name     = "My Organization"
    description      = "My Organization"
    runtime_type     = "HYBRID"
    analytics_region = "europe-west1"
  }
  envgroups = {
    test = ["test.example.com"]
    prod = ["prod.example.com"]
  }
  environments = {
    apis-test = {
      display_name = "APIs test"
      description  = "APIs Test"
      envgroups    = ["test"]
    }
    apis-prod = {
      display_name = "APIs prod"
      description  = "APIs prod"
      envgroups    = ["prod"]
      iam = {
        "roles/viewer" = ["group:devops@myorg.com"]
      }
    }
  }
}
# tftest modules=1 resources=8

New environment group in an existing organization

module "apigee" {
  source     = "./fabric/modules/apigee"
  project_id = "my-project"
  envgroups = {
    test = ["test.example.com"]
  }
}
# tftest modules=1 resources=1

New environment in an existing environment group

module "apigee" {
  source     = "./fabric/modules/apigee"
  project_id = "my-project"
  environments = {
    apis-test = {
      display_name = "APIs test"
      description  = "APIs Test"
      envgroups    = ["test"]
    }
  }
}
# tftest modules=1 resources=2

New instance attached to an existing environment

module "apigee" {
  source     = "./fabric/modules/apigee"
  project_id = "my-project"
  instances = {
    instance-test-ew1 = {
      region                        = "europe-west1"
      environments                  = ["apis-test"]
      runtime_ip_cidr_range         = "10.0.4.0/22"
      troubleshooting_ip_cidr_range = "10.1.1.0/28"
    }
  }
}
# tftest modules=1 resources=2

New endpoint attachment

Endpoint attachments allow to implement Apigee southbound network patterns.

module "apigee" {
  source     = "./fabric/modules/apigee"
  project_id = "my-project"
  endpoint_attachments = {
    endpoint-backend-1 = {
      region             = "europe-west1"
      service_attachment = "projects/my-project-1/serviceAttachments/gkebackend1"
    }
  }
}
# tftest modules=1 resources=1

Variables

name description type required default
project_id Project ID. string
endpoint_attachments Endpoint attachments. map(object({…})) null
envgroups Environment groups (NAME => [HOSTNAMES]). map(list(string)) null
environments Environments. map(object({…})) null
instances Instances. map(object({…})) null
organization Apigee organization. If set to null the organization must already exist. object({…}) null

Outputs

name description sensitive
endpoint_attachment_hosts Endpoint hosts.
envgroups Environment groups.
environments Environment.
instances Instances.
org_id Organization ID.
org_name Organization name.
organization Organization.
service_attachments Service attachments.