# 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" envgroups = ["test"] regions = ["europe-west1"] } apis-prod = { display_name = "APIs prod" description = "APIs prod" envgroups = ["prod"] regions = ["europe-west3"] iam = { "roles/viewer" = ["group:devops@myorg.com"] } } } instances = { europe-west1 = { runtime_ip_cidr_range = "10.0.4.0/22" troubleshooting_ip_cidr_range = "10.1.1.0.0/28" } europe-west3 = { runtime_ip_cidr_range = "10.0.8.0/22" troubleshooting_ip_cidr_range = "10.1.16.0/28" enable_nat = true } } 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=15 ``` ### 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 ```hcl module "apigee" { source = "./fabric/modules/apigee" project_id = "my-project" envgroups = { test = ["test.example.com"] } } # tftest modules=1 resources=1 ``` ### New environment ```hcl module "apigee" { source = "./fabric/modules/apigee" project_id = "my-project" environments = { apis-test = { display_name = "APIs test" description = "APIs Test" } } } # tftest modules=1 resources=1 ``` ### New instance ```hcl module "apigee" { source = "./fabric/modules/apigee" project_id = "my-project" instances = { europe-west1 = { runtime_ip_cidr_range = "10.0.4.0/22" troubleshooting_ip_cidr_range = "10.1.1.0/28" } } } # tftest modules=1 resources=1 ``` ### 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 ``` ### Apigee add-ons ```hcl module "apigee" { source = "./fabric/modules/apigee" project_id = "my-project" addons_config = { monetization = true } } # tftest modules=1 resources=1 ``` ## Variables | name | description | type | required | default | |---|---|:---:|:---:|:---:| | [project_id](variables.tf#L95) | Project ID. | string | ✓ | | | [addons_config](variables.tf#L17) | Addons configuration. | object({…}) | | null | | [endpoint_attachments](variables.tf#L29) | Endpoint attachments. | map(object({…})) | | {} | | [envgroups](variables.tf#L39) | Environment groups (NAME => [HOSTNAMES]). | map(list(string)) | | {} | | [environments](variables.tf#L46) | Environments. | map(object({…})) | | {} | | [instances](variables.tf#L65) | Instances ([REGION] => [INSTANCE]). | map(object({…})) | | {} | | [organization](variables.tf#L80) | 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. | | | [nat_ips](outputs.tf#L37) | NAT IP addresses used in instances. | | | [org_id](outputs.tf#L45) | Organization ID. | | | [org_name](outputs.tf#L50) | Organization name. | | | [organization](outputs.tf#L55) | Organization. | | | [service_attachments](outputs.tf#L60) | Service attachments. | |