blob: 1bc68938b6c60aa08626d8ef1f4fe4d0310791ba [file] [log] [blame]
---
# ----------------------------------------------------------------------------
#
# *** AUTO GENERATED CODE *** Type: MMv1 ***
#
# ----------------------------------------------------------------------------
#
# This file is automatically generated by Magic Modules and manual
# changes will be clobbered when the file is regenerated.
#
# Please read more about how to change this file in
# .github/CONTRIBUTING.md.
#
# ----------------------------------------------------------------------------
subcategory: "Apigee"
description: |-
An `Organization` is the top-level container in Apigee.
---
# google\_apigee\_organization
An `Organization` is the top-level container in Apigee.
To get more information about Organization, see:
* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations)
* How-to Guides
* [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)
## Example Usage - Apigee Organization Cloud Basic
```hcl
data "google_client_config" "current" {}
resource "google_compute_network" "apigee_network" {
name = "apigee-network"
}
resource "google_compute_global_address" "apigee_range" {
name = "apigee-range"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.apigee_network.id
}
resource "google_service_networking_connection" "apigee_vpc_connection" {
network = google_compute_network.apigee_network.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.apigee_range.name]
}
resource "google_apigee_organization" "org" {
analytics_region = "us-central1"
project_id = data.google_client_config.current.project
authorized_network = google_compute_network.apigee_network.id
depends_on = [google_service_networking_connection.apigee_vpc_connection]
}
```
## Example Usage - Apigee Organization Cloud Basic Disable Vpc Peering
```hcl
data "google_client_config" "current" {}
resource "google_apigee_organization" "org" {
description = "Terraform-provisioned basic Apigee Org without VPC Peering."
analytics_region = "us-central1"
project_id = data.google_client_config.current.project
disable_vpc_peering = true
}
```
## Example Usage - Apigee Organization Cloud Full
```hcl
data "google_client_config" "current" {}
resource "google_compute_network" "apigee_network" {
name = "apigee-network"
}
resource "google_compute_global_address" "apigee_range" {
name = "apigee-range"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.apigee_network.id
}
resource "google_service_networking_connection" "apigee_vpc_connection" {
network = google_compute_network.apigee_network.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.apigee_range.name]
}
resource "google_kms_key_ring" "apigee_keyring" {
name = "apigee-keyring"
location = "us-central1"
}
resource "google_kms_crypto_key" "apigee_key" {
name = "apigee-key"
key_ring = google_kms_key_ring.apigee_keyring.id
lifecycle {
prevent_destroy = true
}
}
resource "google_project_service_identity" "apigee_sa" {
provider = google-beta
project = google_project.project.project_id
service = google_project_service.apigee.service
}
resource "google_kms_crypto_key_iam_member" "apigee_sa_keyuser" {
crypto_key_id = google_kms_crypto_key.apigee_key.id
role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
member = "serviceAccount:${google_project_service_identity.apigee_sa.email}"
}
resource "google_apigee_organization" "org" {
analytics_region = "us-central1"
display_name = "apigee-org"
description = "Terraform-provisioned Apigee Org."
project_id = data.google_client_config.current.project
authorized_network = google_compute_network.apigee_network.id
runtime_database_encryption_key_name = google_kms_crypto_key.apigee_key.id
depends_on = [
google_service_networking_connection.apigee_vpc_connection,
google_kms_crypto_key_iam_member.apigee_sa_keyuser,
]
}
```
## Example Usage - Apigee Organization Cloud Full Disable Vpc Peering
```hcl
data "google_client_config" "current" {}
resource "google_kms_key_ring" "apigee_keyring" {
name = "apigee-keyring"
location = "us-central1"
}
resource "google_kms_crypto_key" "apigee_key" {
name = "apigee-key"
key_ring = google_kms_key_ring.apigee_keyring.id
lifecycle {
prevent_destroy = true
}
}
resource "google_project_service_identity" "apigee_sa" {
provider = google-beta
project = google_project.project.project_id
service = google_project_service.apigee.service
}
resource "google_kms_crypto_key_iam_member" "apigee_sa_keyuser" {
crypto_key_id = google_kms_crypto_key.apigee_key.id
role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
member = "serviceAccount:${google_project_service_identity.apigee_sa.email}"
}
resource "google_apigee_organization" "org" {
analytics_region = "us-central1"
display_name = "apigee-org"
description = "Terraform-provisioned Apigee Org without VPC Peering."
project_id = data.google_client_config.current.project
disable_vpc_peering = true
runtime_database_encryption_key_name = google_kms_crypto_key.apigee_key.id
depends_on = [
google_kms_crypto_key_iam_member.apigee_sa_keyuser,
]
}
```
## Argument Reference
The following arguments are supported:
* `project_id` -
(Required)
The project ID associated with the Apigee organization.
- - -
* `display_name` -
(Optional)
The display name of the Apigee organization.
* `description` -
(Optional)
Description of the Apigee organization.
* `analytics_region` -
(Optional)
Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).
* `authorized_network` -
(Optional)
Compute Engine network used for Service Networking to be peered with Apigee runtime instances.
See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started).
Valid only when `RuntimeType` is set to CLOUD. The value can be updated only when there are no runtime instances. For example: "default".
* `disable_vpc_peering` -
(Optional)
Flag that specifies whether the VPC Peering through Private Google Access should be
disabled between the consumer network and Apigee. Required if an `authorizedNetwork`
on the consumer project is not provided, in which case the flag should be set to `true`.
Valid only when `RuntimeType` is set to CLOUD. The value must be set before the creation
of any Apigee runtime instance and can be updated only when there are no runtime instances.
* `runtime_type` -
(Optional)
Runtime type of the Apigee organization based on the Apigee subscription purchased.
Default value is `CLOUD`.
Possible values are: `CLOUD`, `HYBRID`.
* `billing_type` -
(Optional)
Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing).
* `runtime_database_encryption_key_name` -
(Optional)
Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances.
Update is not allowed after the organization is created.
If not specified, a Google-Managed encryption key will be used.
Valid only when `RuntimeType` is CLOUD. For example: `projects/foo/locations/us/keyRings/bar/cryptoKeys/baz`.
* `properties` -
(Optional)
Properties defined in the Apigee organization profile.
Structure is [documented below](#nested_properties).
* `retention` -
(Optional)
Optional. This setting is applicable only for organizations that are soft-deleted (i.e., BillingType
is not EVALUATION). It controls how long Organization data will be retained after the initial delete
operation completes. During this period, the Organization may be restored to its last known state.
After this period, the Organization will no longer be able to be restored.
Default value is `DELETION_RETENTION_UNSPECIFIED`.
Possible values are: `DELETION_RETENTION_UNSPECIFIED`, `MINIMUM`.
<a name="nested_properties"></a>The `properties` block supports:
* `property` -
(Optional)
List of all properties in the object.
Structure is [documented below](#nested_property).
<a name="nested_property"></a>The `property` block supports:
* `name` -
(Optional)
Name of the property.
* `value` -
(Optional)
Value of the property.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
* `id` - an identifier for the resource with format `organizations/{{name}}`
* `name` -
Output only. Name of the Apigee organization.
* `subscription_type` -
Output only. Subscription type of the Apigee organization.
Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased).
* `ca_certificate` -
Output only. Base64-encoded public certificate for the root CA of the Apigee organization.
Valid only when `RuntimeType` is CLOUD. A base64-encoded string.
* `apigee_project_id` -
Output only. Project ID of the Apigee Tenant Project.
## Timeouts
This resource provides the following
[Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options:
- `create` - Default is 45 minutes.
- `update` - Default is 45 minutes.
- `delete` - Default is 45 minutes.
## Import
Organization can be imported using any of these accepted formats:
* `organizations/{{name}}`
* `{{name}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Organization using one of the formats above. For example:
```tf
import {
id = "organizations/{{name}}"
to = google_apigee_organization.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), Organization can be imported using one of the formats above. For example:
```
$ terraform import google_apigee_organization.default organizations/{{name}}
$ terraform import google_apigee_organization.default {{name}}
```