forgejo-config/terraform/main.tf

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
}