blob: cd93ff190636208d735174c8205427f1b0062f03 [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: "Looker (Google Cloud core)"
description: |-
A Google Cloud Looker instance.
---
# google\_looker\_instance
A Google Cloud Looker instance.
To get more information about Instance, see:
* [API documentation](https://cloud.google.com/looker/docs/reference/rest/v1/projects.locations.instances)
* How-to Guides
* [Create a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-create)
* [Configure a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-setup)
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=looker_instance_basic&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Looker Instance Basic
```hcl
resource "google_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD"
region = "us-central1"
oauth_config {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=looker_instance_full&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Looker Instance Full
```hcl
resource "google_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD"
region = "us-central1"
public_ip_enabled = true
admin_settings {
allowed_email_domains = ["google.com"]
}
// User metadata config is only available when platform edition is LOOKER_CORE_STANDARD.
user_metadata {
additional_developer_user_count = 10
additional_standard_user_count = 10
additional_viewer_user_count = 10
}
maintenance_window {
day_of_week = "THURSDAY"
start_time {
hours = 22
minutes = 0
seconds = 0
nanos = 0
}
}
deny_maintenance_period {
start_date {
year = 2050
month = 1
day = 1
}
end_date {
year = 2050
month = 2
day = 1
}
time {
hours = 10
minutes = 0
seconds = 0
nanos = 0
}
}
oauth_config {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
}
```
## Example Usage - Looker Instance Enterprise Full
```hcl
resource "google_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_ENTERPRISE_ANNUAL"
region = "us-central1"
private_ip_enabled = true
public_ip_enabled = false
reserved_range = "${google_compute_global_address.looker_range.name}"
consumer_network = google_compute_network.looker_network.id
admin_settings {
allowed_email_domains = ["google.com"]
}
encryption_config {
kms_key_name = "looker-kms-key"
}
maintenance_window {
day_of_week = "THURSDAY"
start_time {
hours = 22
minutes = 0
seconds = 0
nanos = 0
}
}
deny_maintenance_period {
start_date {
year = 2050
month = 1
day = 1
}
end_date {
year = 2050
month = 2
day = 1
}
time {
hours = 10
minutes = 0
seconds = 0
nanos = 0
}
}
oauth_config {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
depends_on = [
google_service_networking_connection.looker_vpc_connection
]
}
resource "google_service_networking_connection" "looker_vpc_connection" {
network = google_compute_network.looker_network.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.looker_range.name]
}
resource "google_compute_global_address" "looker_range" {
name = "looker-range"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 20
network = google_compute_network.looker_network.id
}
data "google_project" "project" {}
resource "google_compute_network" "looker_network" {
name = "looker-network"
}
resource "google_kms_crypto_key_iam_member" "crypto_key" {
crypto_key_id = "looker-kms-key"
role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-looker.iam.gserviceaccount.com"
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=looker_instance_custom_domain&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Looker Instance Custom Domain
```hcl
resource "google_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD"
region = "us-central1"
oauth_config {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
custom_domain {
domain = "my-custom-domain.com"
}
}
```
## Argument Reference
The following arguments are supported:
* `name` -
(Required)
The ID of the instance or a fully qualified identifier for the instance.
- - -
* `admin_settings` -
(Optional)
Looker instance Admin settings.
Structure is [documented below](#nested_admin_settings).
* `consumer_network` -
(Optional)
Network name in the consumer project in the format of: projects/{project}/global/networks/{network}
Note that the consumer network may be in a different GCP project than the consumer
project that is hosting the Looker Instance.
* `deny_maintenance_period` -
(Optional)
Maintenance denial period for this instance.
You must allow at least 14 days of maintenance availability
between any two deny maintenance periods.
Structure is [documented below](#nested_deny_maintenance_period).
* `encryption_config` -
(Optional)
Looker instance encryption settings.
Structure is [documented below](#nested_encryption_config).
* `maintenance_window` -
(Optional)
Maintenance window for an instance.
Maintenance of your instance takes place once a month, and will require
your instance to be restarted during updates, which will temporarily
disrupt service.
Structure is [documented below](#nested_maintenance_window).
* `oauth_config` -
(Optional)
Looker Instance OAuth login settings.
Structure is [documented below](#nested_oauth_config).
* `platform_edition` -
(Optional)
Platform editions for a Looker instance. Each edition maps to a set of instance features, like its size. Must be one of these values:
- LOOKER_CORE_TRIAL: trial instance
- LOOKER_CORE_STANDARD: pay as you go standard instance
- LOOKER_CORE_STANDARD_ANNUAL: subscription standard instance
- LOOKER_CORE_ENTERPRISE_ANNUAL: subscription enterprise instance
- LOOKER_CORE_EMBED_ANNUAL: subscription embed instance
Default value is `LOOKER_CORE_TRIAL`.
Possible values are: `LOOKER_CORE_TRIAL`, `LOOKER_CORE_STANDARD`, `LOOKER_CORE_STANDARD_ANNUAL`, `LOOKER_CORE_ENTERPRISE_ANNUAL`, `LOOKER_CORE_EMBED_ANNUAL`.
* `private_ip_enabled` -
(Optional)
Whether private IP is enabled on the Looker instance.
* `public_ip_enabled` -
(Optional)
Whether public IP is enabled on the Looker instance.
* `reserved_range` -
(Optional)
Name of a reserved IP address range within the consumer network, to be used for
private service access connection. User may or may not specify this in a request.
* `user_metadata` -
(Optional)
Metadata about users for a Looker instance.
These settings are only available when platform edition LOOKER_CORE_STANDARD is set.
There are ten Standard and two Developer users included in the cost of the product.
You can allocate additional Standard, Viewer, and Developer users for this instance.
It is an optional step and can be modified later.
With the Standard edition of Looker (Google Cloud core), you can provision up to 50
total users, distributed across Viewer, Standard, and Developer.
Structure is [documented below](#nested_user_metadata).
* `custom_domain` -
(Optional)
Custom domain settings for a Looker instance.
Structure is [documented below](#nested_custom_domain).
* `region` -
(Optional)
The name of the Looker region of the instance.
* `project` - (Optional) The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.
<a name="nested_admin_settings"></a>The `admin_settings` block supports:
* `allowed_email_domains` -
(Optional)
Email domain allowlist for the instance.
Define the email domains to which your users can deliver Looker (Google Cloud core) content.
Updating this list will restart the instance. Updating the allowed email domains from terraform
means the value provided will be considered as the entire list and not an amendment to the
existing list of allowed email domains.
<a name="nested_deny_maintenance_period"></a>The `deny_maintenance_period` block supports:
* `start_date` -
(Required)
Required. Start date of the deny maintenance period
Structure is [documented below](#nested_start_date).
* `end_date` -
(Required)
Required. Start date of the deny maintenance period
Structure is [documented below](#nested_end_date).
* `time` -
(Required)
Required. Start time of the window in UTC time.
Structure is [documented below](#nested_time).
<a name="nested_start_date"></a>The `start_date` block supports:
* `year` -
(Optional)
Year of the date. Must be from 1 to 9999, or 0 to specify a date without
a year.
* `month` -
(Optional)
Month of a year. Must be from 1 to 12, or 0 to specify a year without a
month and day.
* `day` -
(Optional)
Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
to specify a year by itself or a year and month where the day isn't significant.
<a name="nested_end_date"></a>The `end_date` block supports:
* `year` -
(Optional)
Year of the date. Must be from 1 to 9999, or 0 to specify a date without
a year.
* `month` -
(Optional)
Month of a year. Must be from 1 to 12, or 0 to specify a year without a
month and day.
* `day` -
(Optional)
Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
to specify a year by itself or a year and month where the day isn't significant.
<a name="nested_time"></a>The `time` block supports:
* `hours` -
(Optional)
Hours of day in 24 hour format. Should be from 0 to 23.
* `minutes` -
(Optional)
Minutes of hour of day. Must be from 0 to 59.
* `seconds` -
(Optional)
Seconds of minutes of the time. Must normally be from 0 to 59.
* `nanos` -
(Optional)
Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
<a name="nested_encryption_config"></a>The `encryption_config` block supports:
* `kms_key_name` -
(Optional)
Name of the customer managed encryption key (CMEK) in KMS.
* `kms_key_state` -
(Output)
Status of the customer managed encryption key (CMEK) in KMS.
* `kms_key_name_version` -
(Output)
Full name and version of the CMEK key currently in use to encrypt Looker data.
<a name="nested_maintenance_window"></a>The `maintenance_window` block supports:
* `day_of_week` -
(Required)
Required. Day of the week for this MaintenanceWindow (in UTC).
- MONDAY: Monday
- TUESDAY: Tuesday
- WEDNESDAY: Wednesday
- THURSDAY: Thursday
- FRIDAY: Friday
- SATURDAY: Saturday
- SUNDAY: Sunday
Possible values are: `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.
* `start_time` -
(Required)
Required. Start time of the window in UTC time.
Structure is [documented below](#nested_start_time).
<a name="nested_start_time"></a>The `start_time` block supports:
* `hours` -
(Optional)
Hours of day in 24 hour format. Should be from 0 to 23.
* `minutes` -
(Optional)
Minutes of hour of day. Must be from 0 to 59.
* `seconds` -
(Optional)
Seconds of minutes of the time. Must normally be from 0 to 59.
* `nanos` -
(Optional)
Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
<a name="nested_oauth_config"></a>The `oauth_config` block supports:
* `client_id` -
(Required)
The client ID for the Oauth config.
* `client_secret` -
(Required)
The client secret for the Oauth config.
<a name="nested_user_metadata"></a>The `user_metadata` block supports:
* `additional_viewer_user_count` -
(Optional)
Number of additional Viewer Users to allocate to the Looker Instance.
* `additional_standard_user_count` -
(Optional)
Number of additional Standard Users to allocate to the Looker Instance.
* `additional_developer_user_count` -
(Optional)
Number of additional Developer Users to allocate to the Looker Instance.
<a name="nested_custom_domain"></a>The `custom_domain` block supports:
* `domain` -
(Optional)
Domain name
* `state` -
(Output)
Status of the custom domain.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
* `id` - an identifier for the resource with format `projects/{{project}}/locations/{{region}}/instances/{{name}}`
* `create_time` -
The time the instance was created in RFC3339 UTC "Zulu" format,
accurate to nanoseconds.
* `egress_public_ip` -
Public Egress IP (IPv4).
* `ingress_private_ip` -
Private Ingress IP (IPv4).
* `ingress_public_ip` -
Public Ingress IP (IPv4).
* `looker_version` -
The Looker version that the instance is using.
* `looker_uri` -
Looker instance URI which can be used to access the Looker Instance UI.
* `update_time` -
The time the instance was updated in RFC3339 UTC "Zulu" format,
accurate to nanoseconds.
## Timeouts
This resource provides the following
[Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options:
- `create` - Default is 90 minutes.
- `update` - Default is 90 minutes.
- `delete` - Default is 90 minutes.
## Import
Instance can be imported using any of these accepted formats:
* `projects/{{project}}/locations/{{region}}/instances/{{name}}`
* `{{project}}/{{region}}/{{name}}`
* `{{region}}/{{name}}`
* `{{name}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Instance using one of the formats above. For example:
```tf
import {
id = "projects/{{project}}/locations/{{region}}/instances/{{name}}"
to = google_looker_instance.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), Instance can be imported using one of the formats above. For example:
```
$ terraform import google_looker_instance.default projects/{{project}}/locations/{{region}}/instances/{{name}}
$ terraform import google_looker_instance.default {{project}}/{{region}}/{{name}}
$ terraform import google_looker_instance.default {{region}}/{{name}}
$ terraform import google_looker_instance.default {{name}}
```
## User Project Overrides
This resource supports [User Project Overrides](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override).