cloud-foundation-fabric/modules/apigee/README.md

6.9 KiB

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"
      envgroups    = ["test"]
    }
    apis-prod = {
      display_name = "APIs prod"
      description  = "APIs prod"
      envgroups    = ["prod"]
      iam = {
        "roles/viewer" = ["group:devops@myorg.com"]
      }
    }
  }
  instances = {
    instance-test-ew1 = {
      region            = "europe-west1"
      environments      = ["apis-test"]
      psa_ip_cidr_range = "10.0.4.0/22"
    }
    instance-prod-ew3 = {
      region            = "europe-west3"
      environments      = ["apis-prod"]
      psa_ip_cidr_range = "10.0.5.0/22"
    }
  }
  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"]
      psa_ip_cidr_range = "10.0.4.0/22"
    }
  }
}
# 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
envgroups Environment groups.
environments Environment.
instances Instances.
org_id Organization ID.
org_name Organization name.
organization Organization.
service_attachments Service attachments.