浏览代码

terraform hetzner volumes

master
父节点
当前提交
b6a013c8d5
共有 3 个文件被更改,包括 45 次插入7 次删除
  1. +1
    -0
      .gitignore
  2. +7
    -1
      inventory_input.tf
  3. +37
    -6
      provider_hetzner.tf

+ 1
- 0
.gitignore 查看文件

@@ -2,3 +2,4 @@
*.auto.tfvars *.auto.tfvars
*.tfstate *.tfstate
*.tfstate.backup *.tfstate.backup
inventory.json

+ 7
- 1
inventory_input.tf 查看文件

@@ -1,6 +1,12 @@
variable "vm_hosts" { variable "vm_hosts" {
default = { default = {
"controller.testing.thengo.net" = { provider = "hetzner", groups = [ "controllers" ] }
"controller.testing.thengo.net" = {
provider = "hetzner"
groups = [ "controllers" ]
volumes = {
data = { size = 32 }
}
}
#"ns.testing.thengo.net" = { provider = "hetzner", groups = [ "nameservers" ] } #"ns.testing.thengo.net" = { provider = "hetzner", groups = [ "nameservers" ] }
} }
} }


+ 37
- 6
provider_hetzner.tf 查看文件

@@ -83,12 +83,38 @@ resource "hcloud_server" "vms" {
for_each = local.hetzner_vm_hosts for_each = local.hetzner_vm_hosts
} }


#resource "hcloud_server_network" "vms" {
# server_id = hcloud_server.vms[each.key].id
# network_id = hcloud_network.internal_network.id
#
# for_each = local.hetzner_vm_hosts
#}

# Volumes

locals {
hetzner_volumes = { for item in flatten([
for hostname, host in local.hetzner_vm_hosts: [
for volumename, volume in lookup(host, "volumes", {}): {
hostname = hostname
volumename = volumename
volume = volume
host = host
}
]
]): "${item.hostname}--${item.volumename}" => merge(item.volume,{hostname=item.hostname}) }
}

resource "hcloud_volume" "volumes" {
name = each.key

location = var.hetzner_default_location
size = each.value.size

for_each = local.hetzner_volumes
}

resource "hcloud_volume_attachment" "volume_attachments" {
volume_id = hcloud_volume.volumes[each.key].id
server_id = hcloud_server.vms[each.value.hostname].id
#automount = true
for_each = local.hetzner_volumes
}



# Provider Variable # Provider Variable


@@ -100,6 +126,11 @@ locals {
external_ip = hcloud_server.vms[hostname].ipv4_address external_ip = hcloud_server.vms[hostname].ipv4_address
ansible_host = hcloud_server.vms[hostname].ipv4_address ansible_host = hcloud_server.vms[hostname].ipv4_address
#internal_ip = hcloud_server_network.vms[hostname].ip #internal_ip = hcloud_server_network.vms[hostname].ip
volumes = {
for volumename, volume in lookup(host, "volumes", {}): volumename => merge(volume,{
device = hcloud_volume.volumes["${hostname}--${volumename}"].linux_device
})
}
} }
if host.provider == "hetzner" if host.provider == "hetzner"
} }


正在加载...
取消
保存