Instance class
A Google Cloud Looker instance.
To get more information about Instance, see:
- API documentation
- How-to Guides
- Configure a Looker (Google Cloud core) instance
- Create a Looker (Google Cloud core) instance
Example Usage
Looker Instance Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance",
platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
region: "us-central1",
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
deletionPolicy: "DEFAULT",
});
import pulumi
import pulumi_gcp as gcp
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance",
platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
region="us-central1",
oauth_config={
"client_id": "my-client-id",
"client_secret": "my-client-secret",
},
deletion_policy="DEFAULT")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance",
PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
Region = "us-central1",
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
DeletionPolicy = "DEFAULT",
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance"),
PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
Region: pulumi.String("us-central1"),
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
DeletionPolicy: pulumi.String("DEFAULT"),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
region = "us-central1"
oauth_config = {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
deletion_policy = "DEFAULT"
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance")
.platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
.region("us-central1")
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.deletionPolicy("DEFAULT")
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance
platformEdition: LOOKER_CORE_STANDARD_ANNUAL
region: us-central1
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
deletionPolicy: DEFAULT
Looker Instance Full
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance",
platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
region: "us-central1",
publicIpEnabled: true,
geminiEnabled: true,
adminSettings: {
allowedEmailDomains: ["google.com"],
},
maintenanceWindow: {
dayOfWeek: "THURSDAY",
startTime: {
hours: 22,
minutes: 0,
seconds: 0,
nanos: 0,
},
},
denyMaintenancePeriod: {
startDate: {
year: 2050,
month: 1,
day: 1,
},
endDate: {
year: 2050,
month: 2,
day: 1,
},
time: {
hours: 10,
minutes: 0,
seconds: 0,
nanos: 0,
},
},
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
});
import pulumi
import pulumi_gcp as gcp
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance",
platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
region="us-central1",
public_ip_enabled=True,
gemini_enabled=True,
admin_settings={
"allowed_email_domains": ["google.com"],
},
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",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance",
PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
Region = "us-central1",
PublicIpEnabled = true,
GeminiEnabled = true,
AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs
{
AllowedEmailDomains = new[]
{
"google.com",
},
},
MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs
{
DayOfWeek = "THURSDAY",
StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs
{
Hours = 22,
Minutes = 0,
Seconds = 0,
Nanos = 0,
},
},
DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs
{
StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs
{
Year = 2050,
Month = 1,
Day = 1,
},
EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs
{
Year = 2050,
Month = 2,
Day = 1,
},
Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs
{
Hours = 10,
Minutes = 0,
Seconds = 0,
Nanos = 0,
},
},
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance"),
PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
Region: pulumi.String("us-central1"),
PublicIpEnabled: pulumi.Bool(true),
GeminiEnabled: pulumi.Bool(true),
AdminSettings: &looker.InstanceAdminSettingsArgs{
AllowedEmailDomains: pulumi.StringArray{
pulumi.String("google.com"),
},
},
MaintenanceWindow: &looker.InstanceMaintenanceWindowArgs{
DayOfWeek: pulumi.String("THURSDAY"),
StartTime: &looker.InstanceMaintenanceWindowStartTimeArgs{
Hours: pulumi.Int(22),
Minutes: pulumi.Int(0),
Seconds: pulumi.Int(0),
Nanos: pulumi.Int(0),
},
},
DenyMaintenancePeriod: &looker.InstanceDenyMaintenancePeriodArgs{
StartDate: &looker.InstanceDenyMaintenancePeriodStartDateArgs{
Year: pulumi.Int(2050),
Month: pulumi.Int(1),
Day: pulumi.Int(1),
},
EndDate: &looker.InstanceDenyMaintenancePeriodEndDateArgs{
Year: pulumi.Int(2050),
Month: pulumi.Int(2),
Day: pulumi.Int(1),
},
Time: &looker.InstanceDenyMaintenancePeriodTimeArgs{
Hours: pulumi.Int(10),
Minutes: pulumi.Int(0),
Seconds: pulumi.Int(0),
Nanos: pulumi.Int(0),
},
},
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
region = "us-central1"
public_ip_enabled = true
gemini_enabled = true
admin_settings = {
allowed_email_domains = ["google.com"]
}
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"
}
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance")
.platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
.region("us-central1")
.publicIpEnabled(true)
.geminiEnabled(true)
.adminSettings(InstanceAdminSettingsArgs.builder()
.allowedEmailDomains("google.com")
.build())
.maintenanceWindow(InstanceMaintenanceWindowArgs.builder()
.dayOfWeek("THURSDAY")
.startTime(InstanceMaintenanceWindowStartTimeArgs.builder()
.hours(22)
.minutes(0)
.seconds(0)
.nanos(0)
.build())
.build())
.denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()
.startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()
.year(2050)
.month(1)
.day(1)
.build())
.endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()
.year(2050)
.month(2)
.day(1)
.build())
.time(InstanceDenyMaintenancePeriodTimeArgs.builder()
.hours(10)
.minutes(0)
.seconds(0)
.nanos(0)
.build())
.build())
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance
platformEdition: LOOKER_CORE_STANDARD_ANNUAL
region: us-central1
publicIpEnabled: true
geminiEnabled: true
adminSettings:
allowedEmailDomains:
- google.com
maintenanceWindow:
dayOfWeek: THURSDAY
startTime:
hours: 22
minutes: 0
seconds: 0
nanos: 0
denyMaintenancePeriod:
startDate:
year: 2050
month: 1
day: 1
endDate:
year: 2050
month: 2
day: 1
time:
hours: 10
minutes: 0
seconds: 0
nanos: 0
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
Looker Instance Fips
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance-fips",
platformEdition: "LOOKER_CORE_ENTERPRISE_ANNUAL",
region: "us-central1",
publicIpEnabled: true,
fipsEnabled: true,
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
});
import pulumi
import pulumi_gcp as gcp
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance-fips",
platform_edition="LOOKER_CORE_ENTERPRISE_ANNUAL",
region="us-central1",
public_ip_enabled=True,
fips_enabled=True,
oauth_config={
"client_id": "my-client-id",
"client_secret": "my-client-secret",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance-fips",
PlatformEdition = "LOOKER_CORE_ENTERPRISE_ANNUAL",
Region = "us-central1",
PublicIpEnabled = true,
FipsEnabled = true,
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance-fips"),
PlatformEdition: pulumi.String("LOOKER_CORE_ENTERPRISE_ANNUAL"),
Region: pulumi.String("us-central1"),
PublicIpEnabled: pulumi.Bool(true),
FipsEnabled: pulumi.Bool(true),
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_looker_instance" "looker-instance" {
name = "my-instance-fips"
platform_edition = "LOOKER_CORE_ENTERPRISE_ANNUAL"
region = "us-central1"
public_ip_enabled = true
fips_enabled = true
oauth_config = {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance-fips")
.platformEdition("LOOKER_CORE_ENTERPRISE_ANNUAL")
.region("us-central1")
.publicIpEnabled(true)
.fipsEnabled(true)
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance-fips
platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL
region: us-central1
publicIpEnabled: true
fipsEnabled: true
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
Looker Instance Enterprise Full
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const lookerNetwork = new gcp.compute.Network("looker_network", {name: "looker-network"});
const lookerRange = new gcp.compute.GlobalAddress("looker_range", {
name: "looker-range",
purpose: "VPC_PEERING",
addressType: "INTERNAL",
prefixLength: 20,
network: lookerNetwork.id,
});
const lookerVpcConnection = new gcp.servicenetworking.Connection("looker_vpc_connection", {
network: lookerNetwork.id,
service: "servicenetworking.googleapis.com",
reservedPeeringRanges: [lookerRange.name],
});
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance",
platformEdition: "LOOKER_CORE_ENTERPRISE_ANNUAL",
region: "us-central1",
privateIpEnabled: true,
publicIpEnabled: false,
geminiEnabled: true,
reservedRange: lookerRange.name,
consumerNetwork: lookerNetwork.id,
adminSettings: {
allowedEmailDomains: ["google.com"],
},
encryptionConfig: {
kmsKeyName: "looker-kms-key",
},
maintenanceWindow: {
dayOfWeek: "THURSDAY",
startTime: {
hours: 22,
minutes: 0,
seconds: 0,
nanos: 0,
},
},
denyMaintenancePeriod: {
startDate: {
year: 2050,
month: 1,
day: 1,
},
endDate: {
year: 2050,
month: 2,
day: 1,
},
time: {
hours: 10,
minutes: 0,
seconds: 0,
nanos: 0,
},
},
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
}, {
dependsOn: [lookerVpcConnection],
});
const project = gcp.organizations.getProject({});
const cryptoKey = new gcp.kms.CryptoKeyIAMMember("crypto_key", {
cryptoKeyId: "looker-kms-key",
role: "roles/cloudkms.cryptoKeyEncrypterDecrypter",
member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com`),
});
import pulumi
import pulumi_gcp as gcp
looker_network = gcp.compute.Network("looker_network", name="looker-network")
looker_range = gcp.compute.GlobalAddress("looker_range",
name="looker-range",
purpose="VPC_PEERING",
address_type="INTERNAL",
prefix_length=20,
network=looker_network.id)
looker_vpc_connection = gcp.servicenetworking.Connection("looker_vpc_connection",
network=looker_network.id,
service="servicenetworking.googleapis.com",
reserved_peering_ranges=[looker_range.name])
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance",
platform_edition="LOOKER_CORE_ENTERPRISE_ANNUAL",
region="us-central1",
private_ip_enabled=True,
public_ip_enabled=False,
gemini_enabled=True,
reserved_range=looker_range.name,
consumer_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",
},
opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection]))
project = gcp.organizations.get_project()
crypto_key = gcp.kms.CryptoKeyIAMMember("crypto_key",
crypto_key_id="looker-kms-key",
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
member=f"serviceAccount:service-{project.number}@gcp-sa-looker.iam.gserviceaccount.com")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var lookerNetwork = new Gcp.Compute.Network("looker_network", new()
{
Name = "looker-network",
});
var lookerRange = new Gcp.Compute.GlobalAddress("looker_range", new()
{
Name = "looker-range",
Purpose = "VPC_PEERING",
AddressType = "INTERNAL",
PrefixLength = 20,
Network = lookerNetwork.Id,
});
var lookerVpcConnection = new Gcp.ServiceNetworking.Connection("looker_vpc_connection", new()
{
Network = lookerNetwork.Id,
Service = "servicenetworking.googleapis.com",
ReservedPeeringRanges = new[]
{
lookerRange.Name,
},
});
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance",
PlatformEdition = "LOOKER_CORE_ENTERPRISE_ANNUAL",
Region = "us-central1",
PrivateIpEnabled = true,
PublicIpEnabled = false,
GeminiEnabled = true,
ReservedRange = lookerRange.Name,
ConsumerNetwork = lookerNetwork.Id,
AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs
{
AllowedEmailDomains = new[]
{
"google.com",
},
},
EncryptionConfig = new Gcp.Looker.Inputs.InstanceEncryptionConfigArgs
{
KmsKeyName = "looker-kms-key",
},
MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs
{
DayOfWeek = "THURSDAY",
StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs
{
Hours = 22,
Minutes = 0,
Seconds = 0,
Nanos = 0,
},
},
DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs
{
StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs
{
Year = 2050,
Month = 1,
Day = 1,
},
EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs
{
Year = 2050,
Month = 2,
Day = 1,
},
Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs
{
Hours = 10,
Minutes = 0,
Seconds = 0,
Nanos = 0,
},
},
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
}, new CustomResourceOptions
{
DependsOn =
{
lookerVpcConnection,
},
});
var project = Gcp.Organizations.GetProject.Invoke();
var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember("crypto_key", new()
{
CryptoKeyId = "looker-kms-key",
Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter",
Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-looker.iam.gserviceaccount.com",
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/servicenetworking"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
lookerNetwork, err := compute.NewNetwork(ctx, "looker_network", &compute.NetworkArgs{
Name: pulumi.String("looker-network"),
})
if err != nil {
return err
}
lookerRange, err := compute.NewGlobalAddress(ctx, "looker_range", &compute.GlobalAddressArgs{
Name: pulumi.String("looker-range"),
Purpose: pulumi.String("VPC_PEERING"),
AddressType: pulumi.String("INTERNAL"),
PrefixLength: pulumi.Int(20),
Network: lookerNetwork.ID().ToIDOutput().ToStringOutput(),
})
if err != nil {
return err
}
lookerVpcConnection, err := servicenetworking.NewConnection(ctx, "looker_vpc_connection", &servicenetworking.ConnectionArgs{
Network: lookerNetwork.ID().ToIDOutput().ToStringOutput(),
Service: pulumi.String("servicenetworking.googleapis.com"),
ReservedPeeringRanges: pulumi.StringArray{
lookerRange.Name,
},
})
if err != nil {
return err
}
_, err = looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance"),
PlatformEdition: pulumi.String("LOOKER_CORE_ENTERPRISE_ANNUAL"),
Region: pulumi.String("us-central1"),
PrivateIpEnabled: pulumi.Bool(true),
PublicIpEnabled: pulumi.Bool(false),
GeminiEnabled: pulumi.Bool(true),
ReservedRange: lookerRange.Name,
ConsumerNetwork: lookerNetwork.ID().ToIDOutput().ToStringOutput(),
AdminSettings: &looker.InstanceAdminSettingsArgs{
AllowedEmailDomains: pulumi.StringArray{
pulumi.String("google.com"),
},
},
EncryptionConfig: &looker.InstanceEncryptionConfigArgs{
KmsKeyName: pulumi.String("looker-kms-key"),
},
MaintenanceWindow: &looker.InstanceMaintenanceWindowArgs{
DayOfWeek: pulumi.String("THURSDAY"),
StartTime: &looker.InstanceMaintenanceWindowStartTimeArgs{
Hours: pulumi.Int(22),
Minutes: pulumi.Int(0),
Seconds: pulumi.Int(0),
Nanos: pulumi.Int(0),
},
},
DenyMaintenancePeriod: &looker.InstanceDenyMaintenancePeriodArgs{
StartDate: &looker.InstanceDenyMaintenancePeriodStartDateArgs{
Year: pulumi.Int(2050),
Month: pulumi.Int(1),
Day: pulumi.Int(1),
},
EndDate: &looker.InstanceDenyMaintenancePeriodEndDateArgs{
Year: pulumi.Int(2050),
Month: pulumi.Int(2),
Day: pulumi.Int(1),
},
Time: &looker.InstanceDenyMaintenancePeriodTimeArgs{
Hours: pulumi.Int(10),
Minutes: pulumi.Int(0),
Seconds: pulumi.Int(0),
Nanos: pulumi.Int(0),
},
},
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
}, pulumi.DependsOn([]pulumi.Resource{
lookerVpcConnection,
}))
if err != nil {
return err
}
project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
if err != nil {
return err
}
_, err = kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
CryptoKeyId: pulumi.String("looker-kms-key"),
Role: pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"),
Member: pulumi.Sprintf("serviceAccount:service-%v@gcp-sa-looker.iam.gserviceaccount.com", project.Number),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_organizations_getproject" "project" {
}
resource "gcp_looker_instance" "looker-instance" {
depends_on = [gcp_servicenetworking_connection.looker_vpc_connection]
name = "my-instance"
platform_edition = "LOOKER_CORE_ENTERPRISE_ANNUAL"
region = "us-central1"
private_ip_enabled = true
public_ip_enabled = false
gemini_enabled = true
reserved_range = gcp_compute_globaladdress.looker_range.name
consumer_network = gcp_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"
}
}
resource "gcp_servicenetworking_connection" "looker_vpc_connection" {
network = gcp_compute_network.looker_network.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [gcp_compute_globaladdress.looker_range.name]
}
resource "gcp_compute_globaladdress" "looker_range" {
name = "looker-range"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 20
network = gcp_compute_network.looker_network.id
}
resource "gcp_compute_network" "looker_network" {
name = "looker-network"
}
resource "gcp_kms_cryptokeyiammember" "crypto_key" {
crypto_key_id = "looker-kms-key"
role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
member ="serviceAccount:service-${data.gcp_organizations_getproject.project.number}@gcp-sa-looker.iam.gserviceaccount.com"
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.GlobalAddress;
import com.pulumi.gcp.compute.GlobalAddressArgs;
import com.pulumi.gcp.servicenetworking.Connection;
import com.pulumi.gcp.servicenetworking.ConnectionArgs;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;
import com.pulumi.gcp.looker.inputs.InstanceEncryptionConfigArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.kms.CryptoKeyIAMMember;
import com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var lookerNetwork = new Network("lookerNetwork", NetworkArgs.builder()
.name("looker-network")
.build());
var lookerRange = new GlobalAddress("lookerRange", GlobalAddressArgs.builder()
.name("looker-range")
.purpose("VPC_PEERING")
.addressType("INTERNAL")
.prefixLength(20)
.network(lookerNetwork.id())
.build());
var lookerVpcConnection = new Connection("lookerVpcConnection", ConnectionArgs.builder()
.network(lookerNetwork.id())
.service("servicenetworking.googleapis.com")
.reservedPeeringRanges(lookerRange.name())
.build());
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance")
.platformEdition("LOOKER_CORE_ENTERPRISE_ANNUAL")
.region("us-central1")
.privateIpEnabled(true)
.publicIpEnabled(false)
.geminiEnabled(true)
.reservedRange(lookerRange.name())
.consumerNetwork(lookerNetwork.id())
.adminSettings(InstanceAdminSettingsArgs.builder()
.allowedEmailDomains("google.com")
.build())
.encryptionConfig(InstanceEncryptionConfigArgs.builder()
.kmsKeyName("looker-kms-key")
.build())
.maintenanceWindow(InstanceMaintenanceWindowArgs.builder()
.dayOfWeek("THURSDAY")
.startTime(InstanceMaintenanceWindowStartTimeArgs.builder()
.hours(22)
.minutes(0)
.seconds(0)
.nanos(0)
.build())
.build())
.denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()
.startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()
.year(2050)
.month(1)
.day(1)
.build())
.endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()
.year(2050)
.month(2)
.day(1)
.build())
.time(InstanceDenyMaintenancePeriodTimeArgs.builder()
.hours(10)
.minutes(0)
.seconds(0)
.nanos(0)
.build())
.build())
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(lookerVpcConnection)
.build());
final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
.build());
var cryptoKey = new CryptoKeyIAMMember("cryptoKey", CryptoKeyIAMMemberArgs.builder()
.cryptoKeyId("looker-kms-key")
.role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
.member(String.format("serviceAccount:service-%s@gcp-sa-looker.iam.gserviceaccount.com", project.number()))
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance
platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL
region: us-central1
privateIpEnabled: true
publicIpEnabled: false
geminiEnabled: true
reservedRange: ${lookerRange.name}
consumerNetwork: ${lookerNetwork.id}
adminSettings:
allowedEmailDomains:
- google.com
encryptionConfig:
kmsKeyName: looker-kms-key
maintenanceWindow:
dayOfWeek: THURSDAY
startTime:
hours: 22
minutes: 0
seconds: 0
nanos: 0
denyMaintenancePeriod:
startDate:
year: 2050
month: 1
day: 1
endDate:
year: 2050
month: 2
day: 1
time:
hours: 10
minutes: 0
seconds: 0
nanos: 0
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
options:
dependsOn:
- ${lookerVpcConnection}
lookerVpcConnection:
type: gcp:servicenetworking:Connection
name: looker_vpc_connection
properties:
network: ${lookerNetwork.id}
service: servicenetworking.googleapis.com
reservedPeeringRanges:
- ${lookerRange.name}
lookerRange:
type: gcp:compute:GlobalAddress
name: looker_range
properties:
name: looker-range
purpose: VPC_PEERING
addressType: INTERNAL
prefixLength: 20
network: ${lookerNetwork.id}
lookerNetwork:
type: gcp:compute:Network
name: looker_network
properties:
name: looker-network
cryptoKey:
type: gcp:kms:CryptoKeyIAMMember
name: crypto_key
properties:
cryptoKeyId: looker-kms-key
role: roles/cloudkms.cryptoKeyEncrypterDecrypter
member: serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com
variables:
project:
fn::invoke:
function: gcp:organizations:getProject
arguments: {}
Looker Instance Custom Domain
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance",
platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
region: "us-central1",
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
customDomain: {
domain: "my-custom-domain.com",
},
});
import pulumi
import pulumi_gcp as gcp
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance",
platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
region="us-central1",
oauth_config={
"client_id": "my-client-id",
"client_secret": "my-client-secret",
},
custom_domain={
"domain": "my-custom-domain.com",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance",
PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
Region = "us-central1",
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
CustomDomain = new Gcp.Looker.Inputs.InstanceCustomDomainArgs
{
Domain = "my-custom-domain.com",
},
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance"),
PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
Region: pulumi.String("us-central1"),
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
CustomDomain: &looker.InstanceCustomDomainArgs{
Domain: pulumi.String("my-custom-domain.com"),
},
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
region = "us-central1"
oauth_config = {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
custom_domain = {
domain = "my-custom-domain.com"
}
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import com.pulumi.gcp.looker.inputs.InstanceCustomDomainArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance")
.platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
.region("us-central1")
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.customDomain(InstanceCustomDomainArgs.builder()
.domain("my-custom-domain.com")
.build())
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance
platformEdition: LOOKER_CORE_STANDARD_ANNUAL
region: us-central1
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
customDomain:
domain: my-custom-domain.com
Looker Instance Psc
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance",
platformEdition: "LOOKER_CORE_ENTERPRISE_ANNUAL",
region: "us-central1",
privateIpEnabled: false,
publicIpEnabled: false,
pscEnabled: true,
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
pscConfig: {
allowedVpcs: ["projects/test-project/global/networks/test"],
},
});
import pulumi
import pulumi_gcp as gcp
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance",
platform_edition="LOOKER_CORE_ENTERPRISE_ANNUAL",
region="us-central1",
private_ip_enabled=False,
public_ip_enabled=False,
psc_enabled=True,
oauth_config={
"client_id": "my-client-id",
"client_secret": "my-client-secret",
},
psc_config={
"allowed_vpcs": ["projects/test-project/global/networks/test"],
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance",
PlatformEdition = "LOOKER_CORE_ENTERPRISE_ANNUAL",
Region = "us-central1",
PrivateIpEnabled = false,
PublicIpEnabled = false,
PscEnabled = true,
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
PscConfig = new Gcp.Looker.Inputs.InstancePscConfigArgs
{
AllowedVpcs = new[]
{
"projects/test-project/global/networks/test",
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance"),
PlatformEdition: pulumi.String("LOOKER_CORE_ENTERPRISE_ANNUAL"),
Region: pulumi.String("us-central1"),
PrivateIpEnabled: pulumi.Bool(false),
PublicIpEnabled: pulumi.Bool(false),
PscEnabled: pulumi.Bool(true),
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
PscConfig: &looker.InstancePscConfigArgs{
AllowedVpcs: pulumi.StringArray{
pulumi.String("projects/test-project/global/networks/test"),
},
},
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_ENTERPRISE_ANNUAL"
region = "us-central1"
private_ip_enabled = false
public_ip_enabled = false
psc_enabled = true
oauth_config = {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
psc_config = {
allowed_vpcs = ["projects/test-project/global/networks/test"]
}
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import com.pulumi.gcp.looker.inputs.InstancePscConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance")
.platformEdition("LOOKER_CORE_ENTERPRISE_ANNUAL")
.region("us-central1")
.privateIpEnabled(false)
.publicIpEnabled(false)
.pscEnabled(true)
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.pscConfig(InstancePscConfigArgs.builder()
.allowedVpcs("projects/test-project/global/networks/test")
.build())
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance
platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL
region: us-central1
privateIpEnabled: false
publicIpEnabled: false
pscEnabled: true
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
pscConfig:
allowedVpcs:
- projects/test-project/global/networks/test
Looker Instance Force Delete
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const looker_instance = new gcp.looker.Instance("looker-instance", {
name: "my-instance",
platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
region: "us-central1",
oauthConfig: {
clientId: "my-client-id",
clientSecret: "my-client-secret",
},
deletionPolicy: "FORCE",
});
import pulumi
import pulumi_gcp as gcp
looker_instance = gcp.looker.Instance("looker-instance",
name="my-instance",
platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
region="us-central1",
oauth_config={
"client_id": "my-client-id",
"client_secret": "my-client-secret",
},
deletion_policy="FORCE")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
{
Name = "my-instance",
PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
Region = "us-central1",
OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
{
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
},
DeletionPolicy = "FORCE",
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
Name: pulumi.String("my-instance"),
PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
Region: pulumi.String("us-central1"),
OauthConfig: &looker.InstanceOauthConfigArgs{
ClientId: pulumi.String("my-client-id"),
ClientSecret: pulumi.String("my-client-secret"),
},
DeletionPolicy: pulumi.String("FORCE"),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_looker_instance" "looker-instance" {
name = "my-instance"
platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
region = "us-central1"
oauth_config = {
client_id = "my-client-id"
client_secret = "my-client-secret"
}
deletion_policy = "FORCE"
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
.name("my-instance")
.platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
.region("us-central1")
.oauthConfig(InstanceOauthConfigArgs.builder()
.clientId("my-client-id")
.clientSecret("my-client-secret")
.build())
.deletionPolicy("FORCE")
.build());
}
}
resources:
looker-instance:
type: gcp:looker:Instance
properties:
name: my-instance
platformEdition: LOOKER_CORE_STANDARD_ANNUAL
region: us-central1
oauthConfig:
clientId: my-client-id
clientSecret: my-client-secret
deletionPolicy: FORCE
Import
Instance can be imported using any of these accepted formats:
projects/{{project}}/locations/{{region}}/instances/{{name}}{{project}}/{{region}}/{{name}}{{region}}/{{name}}{{name}}
When using the pulumi import command, Instance can be imported using one of the formats above. For example:
$ pulumi import gcp:looker/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}
$ pulumi import gcp:looker/instance:Instance default {{project}}/{{region}}/{{name}}
$ pulumi import gcp:looker/instance:Instance default {{region}}/{{name}}
$ pulumi import gcp:looker/instance:Instance default {{name}}
Constructors
- Instance(String name, {InstanceArgs? args, CustomResourceOptions? options})
-
Creates a new Instance.
nameThe Pulumi resource name.argsArguments used to configure this Instance. The set of arguments for Instance.optionsResource options controlling this resource's behavior. - Instance.reference(String urn)
- Creates a typed reference to an existing Instance resource.
Properties
-
adminSettings
↔ Output<
InstanceAdminSettings?> -
Looker instance Admin settings.
Structure is documented below.
latefinal
-
childResources
→ Set<
Resource> -
finalinherited
-
completionSources
↔ Map<
String, IOutputCompletionSource> -
latefinalinherited
-
consumerNetwork
↔ Output<
String?> -
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.
latefinal
-
controlledEgressConfig
↔ Output<
InstanceControlledEgressConfig?> -
Controlled egress configuration.
Structure is documented below.
latefinal
-
controlledEgressEnabled
↔ Output<
bool?> -
Whether controlled egress is enabled on the Looker instance.
latefinal
-
createTime
↔ Output<
String> -
The time the instance was created in RFC3339 UTC "Zulu" format,
accurate to nanoseconds.
latefinal
-
customDomain
↔ Output<
InstanceCustomDomain?> -
Custom domain settings for a Looker instance.
Structure is documented below.
latefinal
-
deletionPolicy
↔ Output<
String> -
Policy to determine if the cluster should be deleted forcefully.
If setting deletionPolicy = "FORCE", the Looker instance will be deleted regardless
of its nested resources. If set to "DEFAULT", Looker instances that still have
nested resources will return an error.
latefinal
-
denyMaintenancePeriod
↔ Output<
InstanceDenyMaintenancePeriod?> -
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.
latefinal
-
egressPublicIp
↔ Output<
String> -
Public Egress IP (IPv4).
latefinal
-
encryptionConfig
↔ Output<
InstanceEncryptionConfig> -
Looker instance encryption settings.
Structure is documented below.
latefinal
-
fipsEnabled
↔ Output<
bool?> -
FIPS 140-2 Encryption enablement for Looker (Google Cloud Core).
latefinal
-
geminiEnabled
↔ Output<
bool?> -
Gemini enablement for Looker (Google Cloud Core).
latefinal
- hashCode → int
-
The hash code for this object.
no setterinherited
-
id
↔ Output<
String> -
getter/setter pairinherited
-
ingressPrivateIp
↔ Output<
String> -
Private Ingress IP (IPv4).
latefinal
-
ingressPublicIp
↔ Output<
String> -
Public Ingress IP (IPv4).
latefinal
- isCustom → bool
-
Returns whether this resource is provider-managed.
no setterinherited
- isProtected → bool
-
Returns whether this resource is protected from deletion.
no setterinherited
- isRemote → bool
-
Whether this resource is registered as remote.
no setterinherited
- isResourceReference → bool
-
Whether this instance represents a resource value returned over RPC.
finalinherited
-
lookerUri
↔ Output<
String> -
Looker instance URI which can be used to access the Looker Instance UI.
latefinal
-
lookerVersion
↔ Output<
String> -
The Looker version that the instance is using.
latefinal
-
maintenanceWindow
↔ Output<
InstanceMaintenanceWindow?> -
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.
latefinal
-
name
↔ Output<
String> -
The ID of the instance or a fully qualified identifier for the instance.
latefinal
-
oauthConfig
↔ Output<
InstanceOauthConfig> -
Looker Instance OAuth login settings.
Structure is documented below.
latefinal
-
periodicExportConfig
↔ Output<
InstancePeriodicExportConfig?> -
Configuration for periodic export.
Structure is documented below.
latefinal
-
platformEdition
↔ Output<
String?> -
Platform editions for a Looker instance. Each edition maps to a set of instance features, like its size. Must be one of these values:
latefinal
-
privateIpEnabled
↔ Output<
bool?> -
Whether private IP is enabled on the Looker instance.
latefinal
-
project
↔ Output<
String> -
The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.
latefinal
-
pscConfig
↔ Output<
InstancePscConfig> -
Information for Private Service Connect (PSC) setup for a Looker instance.
Structure is documented below.
latefinal
-
pscEnabled
↔ Output<
bool?> -
Whether Public Service Connect (PSC) is enabled on the Looker instance
latefinal
-
publicIpEnabled
↔ Output<
bool?> -
Whether public IP is enabled on the Looker instance.
latefinal
-
region
↔ Output<
String> -
The name of the Looker region of the instance.
latefinal
-
reservedRange
↔ Output<
String?> -
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.
latefinal
-
resourceTransforms
→ List<
ResourceTransform> -
Inherited/explicit async transforms.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
transformations
→ List<
ResourceTransformation> -
Inherited/explicit legacy transformations.
no setterinherited
-
updateTime
↔ Output<
String> -
The time the instance was updated in RFC3339 UTC "Zulu" format,
accurate to nanoseconds.
latefinal
-
urn
↔ Output<
String> -
latefinalinherited
-
userMetadata
↔ Output<
InstanceUserMetadata?> -
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.
latefinal
Methods
-
failId(
Object error) → void -
Completes this resource ID with an error when registration fails.
inherited
-
failOutputs(
Object error) → void -
Completes all output properties with
error.inherited -
failUrn(
Object error) → void -
Completes this resource URN with an error when registration fails.
inherited
-
getProvider(
String moduleMember) → ProviderResource? -
Returns provider for
moduleMember's package, if configured.inherited -
getResourceName(
) → String -
Returns this resource's logical name.
inherited
-
getResourceType(
) → String -
Returns this resource's Pulumi type token.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
registerOutput<
T> (String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output< T> -
Registers a dynamic output property for this resource.
inherited
-
resolveId(
String? value, {required bool isKnown}) → void -
Resolves the provider-assigned ID for this resource.
inherited
-
resolveOutputs(
Struct outputs) → void -
Resolves all output properties from a monitor response payload.
inherited
-
resolveUrn(
String value) → void -
Resolves this resource's URN once assigned by the engine.
inherited
-
serializeProperties(
Map< String, dynamic> properties) → Future<Struct> -
Serializes resource properties for RPC transmission.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited