Skip to content

Instantly share code, notes, and snippets.

@mateuspiresl
Last active April 28, 2024 00:57
Show Gist options
  • Save mateuspiresl/4c8d046e16905c97908def156ed663d4 to your computer and use it in GitHub Desktop.
Save mateuspiresl/4c8d046e16905c97908def156ed663d4 to your computer and use it in GitHub Desktop.
Lab - Essential Google Cloud Infrastructure: Foundation > Virtual Machines (task 2)
# there is variables.tf file defined and not included here
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "3.55.0"
}
}
}
provider "google" {
project = var.project_id
region = var.region
zone = var.zone
}
resource "google_compute_firewall" "default_allow_minecraft" {
name = "minecraft-rule"
network = "default"
source_ranges = ["0.0.0.0/0"]
target_tags = ["minecraft-server"]
allow {
protocol = "tcp"
ports = ["25565"]
}
}
resource "google_compute_address" "server_external" {
name = "mc-server-ip"
}
resource "google_compute_disk" "server_attached" {
name = "minecraft-disk"
type = "pd-ssd"
size = 50
}
resource "google_compute_instance" "server" {
name = "mc-server"
machine_type = "e2-medium"
tags = google_compute_firewall.default_allow_minecraft.target_tags
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
attached_disk {
source = google_compute_disk.server_attached.id
device_name = google_compute_disk.server_attached.name
}
network_interface {
network = "default"
access_config {
nat_ip = google_compute_address.server_external.address
}
}
service_account {
email = "1058633737749-compute@developer.gserviceaccount.com"
scopes = ["https://www.googleapis.com/auth/devstorage.read_write", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment