# 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) ```hcl 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) ```hcl 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 ```hcl 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 ```hcl 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 ```hcl 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](https://cloud.google.com/apigee/docs/api-platform/architecture/southbound-networking-patterns-endpoints#create-the-psc-attachments). ```hcl 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](variables.tf#L78) | Project ID. | string | ✓ | | | [endpoint_attachments](variables.tf#L17) | Endpoint attachments. | map(object({…})) | | null | | [envgroups](variables.tf#L26) | Environment groups (NAME => [HOSTNAMES]). | map(list(string)) | | null | | [environments](variables.tf#L32) | Environments. | map(object({…})) | | null | | [instances](variables.tf#L49) | Instances. | map(object({…})) | | null | | [organization](variables.tf#L64) | Apigee organization. If set to null the organization must already exist. | object({…}) | | null | ## Outputs | name | description | sensitive | |---|---|:---:| | [endpoint_attachment_hosts](outputs.tf#L17) | Endpoint hosts. | | | [envgroups](outputs.tf#L22) | Environment groups. | | | [environments](outputs.tf#L27) | Environment. | | | [instances](outputs.tf#L32) | Instances. | | | [org_id](outputs.tf#L37) | Organization ID. | | | [org_name](outputs.tf#L42) | Organization name. | | | [organization](outputs.tf#L47) | Organization. | | | [service_attachments](outputs.tf#L52) | Service attachments. | |