66 lines
1.3 KiB
HCL
66 lines
1.3 KiB
HCL
terraform {
|
|
required_providers {
|
|
google = {
|
|
source = "hashicorp/google"
|
|
version = "~> 4.0"
|
|
}
|
|
}
|
|
backend "local" {
|
|
path = "terraform.tfstate"
|
|
}
|
|
}
|
|
|
|
provider "google" {
|
|
project = var.project_id
|
|
region = var.region
|
|
zone = var.zone
|
|
}
|
|
|
|
resource "google_compute_instance" "data_engineering_vm" {
|
|
name = var.instance_name
|
|
machine_type = var.machine_type
|
|
zone = var.zone
|
|
|
|
boot_disk {
|
|
initialize_params {
|
|
image = "debian-cloud/debian-11"
|
|
size = var.disk_size_gb
|
|
}
|
|
}
|
|
|
|
network_interface {
|
|
network = "default"
|
|
access_config {
|
|
// Ephemeral public IP
|
|
}
|
|
}
|
|
|
|
metadata = {
|
|
ssh-keys = "${var.ssh_username}:${file(var.ssh_pub_key_path)}"
|
|
}
|
|
|
|
metadata_startup_script = file("${path.module}/../cloud-init/cloud-init.sh")
|
|
|
|
tags = ["http-server", "https-server", "ssh"]
|
|
|
|
service_account {
|
|
scopes = ["cloud-platform"]
|
|
}
|
|
}
|
|
|
|
resource "google_compute_firewall" "forgejo" {
|
|
name = "allow-forgejo"
|
|
network = "default"
|
|
|
|
allow {
|
|
protocol = "tcp"
|
|
ports = ["22", "80", "443", "3000", "222"]
|
|
}
|
|
|
|
source_ranges = ["0.0.0.0/0"]
|
|
target_tags = ["http-server", "https-server", "ssh"]
|
|
}
|
|
|
|
output "instance_ip" {
|
|
value = google_compute_instance.data_engineering_vm.network_interface[0].access_config[0].nat_ip
|
|
}
|