Move terraform files into modules
This commit is contained in:
parent
4e495dbc51
commit
bae9fe9e0f
14 changed files with 286 additions and 104 deletions
64
modules/infrastructure/hcloud.tf
Normal file
64
modules/infrastructure/hcloud.tf
Normal file
|
@ -0,0 +1,64 @@
|
|||
resource "hcloud_ssh_key" "default" {
|
||||
name = var.default_ssh_key.name
|
||||
public_key = var.default_ssh_key.public_key
|
||||
}
|
||||
|
||||
data "template_file" "cloud_init" {
|
||||
template = "${file("./tf-templates/cloud-init.yaml.tpl")}"
|
||||
|
||||
vars = {
|
||||
tailscale_authkey = "${tailscale_tailnet_key.cloud_init_key.key}"
|
||||
default_ssh_key = var.default_ssh_key.public_key
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
hetzner_hosts = {for key, val in var.hosts : key => val if val.provider == "hetzner"}
|
||||
}
|
||||
|
||||
resource "hcloud_primary_ip" "node_ipv4_addresses" {
|
||||
for_each = local.hetzner_hosts
|
||||
name = "primary_ipv4_${each.value.hostname}"
|
||||
datacenter = each.value.datacenter
|
||||
type = "ipv4"
|
||||
assignee_type = "server"
|
||||
auto_delete = false
|
||||
}
|
||||
|
||||
resource "hcloud_primary_ip" "node_ipv6_addresses" {
|
||||
for_each = local.hetzner_hosts
|
||||
name = "primary_ipv6_${each.value.hostname}"
|
||||
datacenter = each.value.datacenter
|
||||
type = "ipv6"
|
||||
assignee_type = "server"
|
||||
auto_delete = false
|
||||
}
|
||||
|
||||
# Create a server
|
||||
resource "hcloud_server" "nodes" {
|
||||
for_each = local.hetzner_hosts
|
||||
name = each.value.hostname
|
||||
datacenter = each.value.datacenter
|
||||
image = each.value.image
|
||||
server_type = each.value.server_type
|
||||
ssh_keys = [hcloud_ssh_key.default.id]
|
||||
user_data = "${data.template_file.cloud_init.rendered}"
|
||||
public_net {
|
||||
ipv4 = hcloud_primary_ip.node_ipv4_addresses[each.key].id
|
||||
ipv6 = hcloud_primary_ip.node_ipv6_addresses[each.key].id
|
||||
}
|
||||
lifecycle {
|
||||
ignore_changes = [
|
||||
ssh_keys,
|
||||
user_data
|
||||
]
|
||||
prevent_destroy = true
|
||||
}
|
||||
}
|
||||
|
||||
resource "hcloud_rdns" "nodes_rdns" {
|
||||
for_each = local.hetzner_hosts
|
||||
server_id = hcloud_server.nodes[each.key].id
|
||||
ip_address = hcloud_server.nodes[each.key].ipv4_address
|
||||
dns_ptr = each.value.rdns
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue