diff --git a/infra/output.tf b/infra/output.tf new file mode 100644 index 0000000..f97f80a --- /dev/null +++ b/infra/output.tf @@ -0,0 +1,13 @@ +output "homelab_servers_status" { + value = { + for server in hcloud_server.HomeLab : + server.name => server.status + } +} + +output "homelab_servers_ips" { + value = { + for server in hcloud_server.HomeLab : + server.name => server.ipv4_address + } +} diff --git a/infra/providers.tf b/infra/providers.tf new file mode 100644 index 0000000..acc625d --- /dev/null +++ b/infra/providers.tf @@ -0,0 +1,12 @@ +terraform { + required_providers { + hcloud = { + source = "hetznercloud/hcloud" + } + } + required_version = ">= 0.13" +} + +provider "hcloud" { + token = var.hcloud_token +} diff --git a/infra/server.tf b/infra/server.tf new file mode 100644 index 0000000..b49f937 --- /dev/null +++ b/infra/server.tf @@ -0,0 +1,11 @@ +resource "hcloud_server" "HomeLab" { + count = var.instances + name = "random" + image = var.os_type + server_type = var.server_type + location = var.location + ssh_keys = [hcloud_ssh_key.default.id] + labels = { + } + +} diff --git a/infra/ssh.tf b/infra/ssh.tf new file mode 100644 index 0000000..4cdecde --- /dev/null +++ b/infra/ssh.tf @@ -0,0 +1,4 @@ +resource "hcloud_ssh_key" "default" { + name = "hetzner_key" + public_key = file("~/.ssh/id_rsa.pub") +} diff --git a/infra/variable.tf b/infra/variable.tf new file mode 100644 index 0000000..0221671 --- /dev/null +++ b/infra/variable.tf @@ -0,0 +1,19 @@ +variable "hcloud_token" { + # default = +} + +variable "location" { + default = "hel1" +} +variable "instances" { + default = "1" +} + +variable "server_type" { + default = "cpx11" +} + +variable "os_type" { + default = "rocky-8" +} +