infrastructure/terraform/main.tf
2021-11-21 14:05:15 +01:00

155 lines
2.7 KiB
HCL

provider "proxmox" {
pm_api_url = "https://10.42.42.42:8006/api2/json"
pm_user = data.vault_generic_secret.proxmox_auth.data["user"]
pm_password = data.vault_generic_secret.proxmox_auth.data["pass"]
pm_tls_insecure = true
}
# For full info see: https://blog.xirion.net/posts/nixos-proxmox-lxc/
resource "proxmox_lxc" "nixos-template" {
target_node = "nuc"
description = "NixOS LXC Template"
hostname = "nixos-template"
ostemplate = "local:vztmpl/nixos-unstable-default_156198829_amd64.tar.xz"
ostype = "unmanaged"
unprivileged = true
vmid = 101
template = true
memory = 1024
features {
nesting = true
}
rootfs {
storage = "local-zfs"
size = "8G"
}
network {
name = "eth0"
bridge = "vmbr0"
ip = "dhcp"
hwaddr = "22:D7:C1:FF:9D:5F"
}
}
resource "proxmox_lxc" "vault" {
target_node = "nuc"
description = "Vault Secrets Management"
hostname = "vault"
unprivileged = false # needed for mlock
vmid = 102
clone = "101"
memory = 1024
rootfs {
storage = "local-zfs"
size = "8G"
}
network {
name = "eth0"
bridge = "vmbr0"
ip = "dhcp"
hwaddr = "16:2B:87:55:0C:0C"
}
}
resource "proxmox_lxc" "mosquitto" {
target_node = "nuc"
description = "mosquitto mqtt broker"
hostname = "mosquitto"
vmid = 104
clone = 101
unprivileged = true
memory = 1024
rootfs {
storage = "local-zfs"
size = "8G"
}
network {
name = "eth0"
bridge = "vmbr0"
ip = "dhcp"
hwaddr = "C6:F9:8B:3D:9E:37"
}
}
resource "proxmox_lxc" "nginx" {
target_node = "nuc"
description = "nginx reverse proxy"
hostname = "nginx"
vmid = 106
clone = 101
unprivileged = true
memory = 512
rootfs {
storage = "local-zfs"
size = "8G"
}
network {
name = "eth0"
bridge = "vmbr0"
ip = "dhcp"
hwaddr = "6A:C2:89:85:CF:A6"
}
}
resource "proxmox_vm_qemu" "k3s-node1" {
name = "k3s-node1"
target_node = "nuc"
vmid = 103
clone = "bastion"
tablet = false
memory = 8192
cores = 4
agent = 1
boot = "order=scsi0;ide2;net0"
network {
model = "virtio"
macaddr = "2E:F8:55:23:D9:9B"
bridge = "vmbr0"
}
disk {
type = "scsi"
storage = "local-zfs"
size = "64G"
ssd = 1
}
}
resource "proxmox_lxc" "consul" {
target_node = "nuc"
description = "consul service mesh"
hostname = "consul"
vmid = 107
clone = 101
unprivileged = true
memory = 512
rootfs {
storage = "local-zfs"
size = "8G"
}
network {
name = "eth0"
bridge = "vmbr0"
ip = "dhcp"
hwaddr = "D6:DE:07:41:73:81"
}
}