hacks/realtime-analytics/artifacts/main.tf (104 lines of code) (raw):
locals {
suffix = "retail"
network_tag = "orcl-db"
datastream_user = "datastream"
datastream_user_password = "z9${random_string.password.result}"
oracle_sid = "XE"
}
data "google_project" "project" {}
resource "google_project_service" "compute_api" {
service = "compute.googleapis.com"
disable_dependent_services = true
}
resource "google_project_service" "datastream_api" {
service = "datastream.googleapis.com"
}
resource "google_project_service" "dataflow_api" {
service = "dataflow.googleapis.com"
}
resource "google_project_service" "pubsub_api" {
service = "pubsub.googleapis.com"
}
data "google_compute_default_service_account" "default" {
depends_on = [
google_project_service.compute_api
]
}
resource "google_project_iam_member" "default_editor" {
project = var.gcp_project_id
role = "roles/editor"
member = "serviceAccount:${data.google_compute_default_service_account.default.email}"
}
resource "google_compute_network" "vpc_sample" {
name = "vpc-${local.suffix}"
auto_create_subnetworks = false
depends_on = [
google_project_service.compute_api
]
}
resource "google_compute_subnetwork" "subnet" {
name = "sub-${local.suffix}"
network = google_compute_network.vpc_sample.self_link
ip_cidr_range = "10.0.0.0/24"
private_ip_google_access = true
}
resource "google_compute_firewall" "allow_internal" {
name = "fwr-ingress-allow-internal"
network = google_compute_network.vpc_sample.self_link
source_ranges = [google_compute_subnetwork.subnet.ip_cidr_range]
allow {
protocol = "tcp"
ports = ["0-65535"]
}
allow {
protocol = "udp"
ports = ["0-65535"]
}
allow {
protocol = "icmp"
}
}
resource "google_compute_firewall" "allow_iap" {
name = "fwr-ingress-allow-iap"
network = google_compute_network.vpc_sample.self_link
source_ranges = ["35.235.240.0/20"]
allow {
protocol = "tcp"
ports = ["22"]
}
}
resource "google_compute_address" "oracle_vm_eip" {
name = "eip-orcl-vm"
depends_on = [
google_compute_network.vpc_sample
]
}
resource "random_string" "password" {
length = 12
special = false
}
resource "google_compute_instance" "oracle_vm" {
name = "gce-lnx-orcl-001"
machine_type = "e2-standard-4"
tags = [local.network_tag]
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
shielded_instance_config {
enable_secure_boot = true
enable_vtpm = true
}
network_interface {
subnetwork = google_compute_subnetwork.subnet.self_link
access_config {
nat_ip = google_compute_address.oracle_vm_eip.address
}
}
metadata_startup_script = templatefile("${path.module}/setup.tftpl", {
datastream_user = local.datastream_user,
datastream_user_password = local.datastream_user_password,
oracle_sid = local.oracle_sid
})
}