/
main.tf
72 lines (62 loc) · 1.86 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
resource "proxmox_vm_qemu" "proxmox_kubernetes_vms" {
count = var.x_number_of
name = "${var.vm_name}-${count.index + 1}"
ipconfig0 = "gw=${var.ip_gateway},ip=${var.ip_addresses[count.index]}"
target_node = "pve5"
onboot = true
# Same CPU as the Physical host, possible to add cpu flags
# Ex: "host,flags=+md-clear;+pcid;+spec-ctrl;+ssbd;+pdpe1gb"
cpu = "host"
numa = false
clone = "${var.template_vm_name}"
full_clone = true
os_type = "cloud-init"
agent = 1
ciuser = var.user
memory = var.memory
balloon = var.memory_min_balloon
cores = var.cores
nameserver = var.nameserver
sshkeys = var.sshkey
vmid = var.vmid_range+count.index
qemu_os = "l26"
tags = "k8s"
searchdomain = var.nameserver_domain
network {
model = "virtio"
bridge = "vmbr0"
tag = var.ip_vlan
}
serial {
id = 0
type = "socket"
}
vga {
type = "serial0"
}
disk {
size = var.root_disk_size
storage = var.root_disk_storage_pool
backup = true
type = "scsi"
}
lifecycle {
ignore_changes = [
network, disk, sshkeys, target_node
]
}
}
data "template_file" "k8s" {
template = file("./templates/k8s-hosts.tpl")
vars = {
k8s_master = "${join("", [element(proxmox_vm_qemu.proxmox_kubernetes_vms, 0).name, " ansible_host=", element(proxmox_vm_qemu.proxmox_kubernetes_vms, 0).default_ipv4_address])}"
k8s_workers = "${join("\n", [for instance in slice(proxmox_vm_qemu.proxmox_kubernetes_vms, 1, length(proxmox_vm_qemu.proxmox_kubernetes_vms)) : join("", [instance.name, " ansible_host=", instance.default_ipv4_address])])}"
}
}
resource "local_file" "k8s_file" {
content = data.template_file.k8s.rendered
filename = "../Ansible/k8s-hosts"
}
output "host_ips" {
value = ["${proxmox_vm_qemu.proxmox_kubernetes_vms.*.default_ipv4_address}"]
}