68 lines
2.3 KiB
Terraform
68 lines
2.3 KiB
Terraform
data "google_client_config" "default" {}
|
|
|
|
resource "google_compute_instance" "vm" {
|
|
name = var.name
|
|
machine_type = var.machine_type
|
|
can_ip_forward = var.can_ip_forward
|
|
project = var.project_id != null ? var.project_id : data.google_client_config.default.project
|
|
description = var.description
|
|
|
|
boot_disk {
|
|
initialize_params {
|
|
image = "debian-cloud/debian-12"
|
|
}
|
|
}
|
|
|
|
network_interface {
|
|
network = var.network_name
|
|
subnetwork = var.subnet_name
|
|
subnetwork_project = var.project_id != null ? var.project_id : data.google_client_config.default.project
|
|
network_ip = var.internal_ip != null ? var.internal_ip : null
|
|
|
|
dynamic "access_config" {
|
|
for_each = var.external_ip_name != null && var.external_ip_name != "AUTO" ? [1] : []
|
|
content {
|
|
nat_ip = data.google_compute_address.external_ip[0].address
|
|
}
|
|
}
|
|
|
|
dynamic "access_config" {
|
|
for_each = var.external_ip_name == "AUTO" ? [1] : []
|
|
content {
|
|
nat_ip = google_compute_address.external_ip[0].address
|
|
}
|
|
}
|
|
}
|
|
|
|
metadata = {
|
|
ssh-keys = "${var.ssh[0].public_key} ${var.ssh[0].ssh_user}"
|
|
startup_script = var.startup_script
|
|
}
|
|
}
|
|
|
|
resource "google_compute_route" "route_to_remote_network" {
|
|
count = length(var.remote_subnets)
|
|
name = "${var.network_name}-to-${replace(var.remote_subnets[count.index], "/[./]/", "-")}"
|
|
project = var.project_id != null ? var.project_id : data.google_client_config.default.project
|
|
network = var.network_name
|
|
dest_range = var.remote_subnets[count.index]
|
|
next_hop_instance = google_compute_instance.vm.id
|
|
next_hop_instance_zone = google_compute_instance.vm.zone
|
|
}
|
|
|
|
resource "google_compute_address" "external_ip" {
|
|
count = var.external_ip_name == "AUTO" ? 1 : 0
|
|
|
|
name = "${var.name}-ip"
|
|
project = var.project_id != null ? var.project_id : data.google_client_config.default.project
|
|
address_type = "EXTERNAL"
|
|
address = var.external_ip_name
|
|
}
|
|
|
|
data "google_compute_address" "external_ip" {
|
|
count = var.external_ip_name != null && var.external_ip_name != "AUTO" ? 1 : 0
|
|
|
|
name = var.external_ip_name
|
|
project = var.project_id != null ? var.project_id : data.google_client_config.default.project
|
|
}
|