Containers > VMs
Also change terraform provider from Telmate/proxmox to bpg/proxmox
This commit is contained in:
parent
9718b947bc
commit
57c808c62f
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,5 @@
|
||||
# Terraform shit
|
||||
*.tfstate.backup
|
||||
.terraform
|
||||
*.tfstate
|
||||
*.log
|
||||
.env
|
45
.terraform.lock.hcl
generated
45
.terraform.lock.hcl
generated
@ -1,6 +1,29 @@
|
||||
# This file is maintained automatically by "terraform init".
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.terraform.io/bpg/proxmox" {
|
||||
version = "0.66.2"
|
||||
constraints = "0.66.2"
|
||||
hashes = [
|
||||
"h1:rmF+11NxCd962DnuWNkJ57ud/KyX0IS1M49+mXyeRHE=",
|
||||
"zh:17a6a7c09d436fb294e6a427af112ecca0ea8f9adc2e8ee60511b834c6994178",
|
||||
"zh:2586cb242c90b5992e88db55288780694dadde92e691ef77a6a9f54556842579",
|
||||
"zh:2b8f9a6e9f4bd40c7de3e3a38983ba303d6fee0cce70d466210318c8ea6f618d",
|
||||
"zh:40f0e5cfc1ea5c234bf54b4ae152f1b881814322a28981cb13af664af52e9340",
|
||||
"zh:449ab1b5a2fb342e78cf8e5971c3537c24f1f486104e60f3a0eb6a7037b043f3",
|
||||
"zh:4f19d5119c9453bdced8cec7d14802076bfd0954366f077d69341f2091405d53",
|
||||
"zh:577c7cc08f53e156401ae151f2dd64ee3e72671a9dc2fdec196a2745c4d99f62",
|
||||
"zh:618143a98fb17ae333c28d9850589fae48dc3ca4f1c0edddf76d46237f4db512",
|
||||
"zh:75b64cb80fc9256d214bd018ed7fac47dc53c036735b696d3cb28cc22f835a45",
|
||||
"zh:9155445a46c75f6d1a944f1668927844afd1eef80995e7085cf191b507b215c8",
|
||||
"zh:aad28b1170dc85e0f9b7baf7048e8b33dde1a4e3f1c2aa010a79ba854a0c07ac",
|
||||
"zh:af3edc4baf5269fa5dcd943ef6f57fb24eab24183a356edd89a0c5b93c77540b",
|
||||
"zh:cbacb98cd0315abb0a029030de0ac775ca302fb20156ebdca2ba34421b9860f8",
|
||||
"zh:e1ddd20f4aadb9a077432c06aab50fad81ff2f5ce59243c428a497423b85b23c",
|
||||
"zh:f26e0763dbe6a6b2195c94b44696f2110f7f55433dc142839be16b9697fa5597",
|
||||
]
|
||||
}
|
||||
|
||||
provider "registry.terraform.io/hashicorp/external" {
|
||||
version = "2.3.3"
|
||||
constraints = "2.3.3"
|
||||
@ -20,25 +43,3 @@ provider "registry.terraform.io/hashicorp/external" {
|
||||
"zh:fa73d83edc92af2e551857594c2232ba6a9e3603ad34b0a5940865202c08d8d7",
|
||||
]
|
||||
}
|
||||
|
||||
provider "registry.terraform.io/telmate/proxmox" {
|
||||
version = "2.9.14"
|
||||
constraints = "2.9.14"
|
||||
hashes = [
|
||||
"h1:H/f+LbVyPOLslHLAYnGuMMRqWFZ65K6E3V+MCYgfAyk=",
|
||||
"zh:0d049d33f705e5b814d30028770c084151218439424e99684ce31d7e26a720b5",
|
||||
"zh:20b1c64ed56d81de95f3f37b82b45b4654c0de26670c0e87a474c5cce13cd015",
|
||||
"zh:2946058abd1d8e50e475b9ec39781eb02576b40dbd80f4653fade4493a4514c6",
|
||||
"zh:29e50a25c456f040ce072f23ac57b5b82ebd3b916ca5ae6688332b5ec62adc4a",
|
||||
"zh:3612932306ce5f08db94868f526cbb8c56d0d3c6ebe1c11a83f92bbf94354296",
|
||||
"zh:42d1699b0abebaac82ea5a19f4393541d8bb2741bde204a8ac1028cdc29d1b14",
|
||||
"zh:5ffd5dc567262eb8aafdf2f6eac63f7f21361da9c5d75a3c36b479638a0001b0",
|
||||
"zh:6692ef323e3b89de99934ad731f6a1850525bf8142916ae28ea4e4048d73a787",
|
||||
"zh:a5afc98e9a4038516bb58e788cb77dea67a60dce780dfcd206d7373c5a56b776",
|
||||
"zh:bf902cded709d84fa27fbf91b589c241f2238a6c4924e4e479eebd74320b93a5",
|
||||
"zh:cab0e1e72c9cebcf669fc6f35ec28cb8ab2dffb0237afc8860aa40d23bf8a49f",
|
||||
"zh:e523b99a48beec83d9bc04b2d336266044f9f53514cefb652fe6768611847196",
|
||||
"zh:f593915e8a24829d322d2eaeedcb153328cf9042f0d84f66040dde1be70ede04",
|
||||
"zh:fba1aff541133e2129dfda0160369635ab48503d5c44b8407ce5922ecc15d0bd",
|
||||
]
|
||||
}
|
||||
|
77
kubes-lxc.tf
Normal file
77
kubes-lxc.tf
Normal file
@ -0,0 +1,77 @@
|
||||
|
||||
resource "proxmox_virtual_environment_download_file" "latest_alpine" {
|
||||
content_type = "vztmpl"
|
||||
datastore_id = "local"
|
||||
node_name = "papp-bunt"
|
||||
url = "http://download.proxmox.com/images/system/alpine-3.20-default_20240908_amd64.tar.xz"
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_container" "kube-template" {
|
||||
description = "Managed by Terraform"
|
||||
node_name = var.proxmox_node
|
||||
vm_id = var.vmid
|
||||
start_on_boot = "true"
|
||||
initialization {
|
||||
hostname = "kube-template"
|
||||
ip_config {
|
||||
ipv4 {
|
||||
address = "dhcp"
|
||||
}
|
||||
}
|
||||
user_account {
|
||||
password = var.user_password
|
||||
keys = var.ssh_keys
|
||||
}
|
||||
}
|
||||
network_interface {
|
||||
name = "eth0"
|
||||
}
|
||||
operating_system {
|
||||
template_file_id = proxmox_virtual_environment_download_file.latest_alpine.id
|
||||
type = "alpine"
|
||||
}
|
||||
startup {
|
||||
order = "3"
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_container" "kube-masters" {
|
||||
vm_id = var.vmid + count.index + 10
|
||||
node_name = var.proxmox_node
|
||||
count = var.master_count
|
||||
initialization {
|
||||
# hostname = data.external.master_kube.result.name
|
||||
hostname = "kube-master-${tostring(count.index)}.kubes.42069.no"
|
||||
}
|
||||
operating_system {
|
||||
template_file_id = proxmox_virtual_environment_download_file.latest_alpine.id
|
||||
type = "alpine"
|
||||
}
|
||||
startup {
|
||||
order = "1"
|
||||
}
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"dnf update -y"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_container" "kube-workers" {
|
||||
vm_id = var.vmid + 100 + count.index
|
||||
node_name = var.proxmox_node
|
||||
count = var.worker_count
|
||||
initialization {
|
||||
# hostname = data.external.worker_kube.result.name
|
||||
hostname = "kube-worker-${tostring(count.index)}.kubes.42069.no"
|
||||
}
|
||||
operating_system {
|
||||
template_file_id = proxmox_virtual_environment_download_file.latest_alpine.id
|
||||
type = "alpine"
|
||||
}
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"dnf update -y"
|
||||
]
|
||||
}
|
||||
}
|
80
kubes.tf
80
kubes.tf
@ -1,80 +0,0 @@
|
||||
|
||||
resource "proxmox_vm_qemu" "kube-masters" {
|
||||
count = var.master_count
|
||||
# name = "kube-master-${count.index + 1}"
|
||||
name = data.external.master_kube.result.name
|
||||
vmid = var.vmid + count.index
|
||||
target_node = var.proxmox_host
|
||||
clone = var.template_name
|
||||
sshkeys = var.ssh_keys
|
||||
agent = 1
|
||||
os_type = "cloud-init"
|
||||
sockets = 1
|
||||
cores = 1
|
||||
cpu = "host"
|
||||
memory = 2048
|
||||
# scsihw = "virtio-scsi-pci"
|
||||
bootdisk = "virtio0"
|
||||
disk {
|
||||
slot = 0
|
||||
size = "8G"
|
||||
type = "virtio"
|
||||
storage = "thic"
|
||||
iothread = 1
|
||||
}
|
||||
network {
|
||||
model = "virtio"
|
||||
bridge = "vmbr0"
|
||||
}
|
||||
lifecycle {
|
||||
ignore_changes = [
|
||||
network,
|
||||
]
|
||||
}
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"apt update",
|
||||
"apt upgrade -y"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_vm_qemu" "kube-workers" {
|
||||
count = var.worker_count
|
||||
# name = "kube-worker-${count.index + 1}"
|
||||
name = data.external.worker_kube.result.name
|
||||
vmid = var.vmid + 100 + count.index
|
||||
target_node = var.proxmox_host
|
||||
clone = var.template_name
|
||||
agent = 1 # QEMU Guest Agent
|
||||
os_type = "cloud-init"
|
||||
sockets = 1
|
||||
cores = 2
|
||||
cpu = "host"
|
||||
memory = 4096
|
||||
# scsihw = "virtio-scsi-pci"
|
||||
bootdisk = "virtio0"
|
||||
disk {
|
||||
slot = 0
|
||||
size = "8G"
|
||||
type = "virtio"
|
||||
storage = "thic"
|
||||
iothread = 1
|
||||
}
|
||||
network {
|
||||
model = "virtio"
|
||||
bridge = "vmbr0"
|
||||
}
|
||||
lifecycle {
|
||||
ignore_changes = [
|
||||
network,
|
||||
]
|
||||
}
|
||||
sshkeys = var.ssh_keys
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"apt update",
|
||||
"apt upgrade -y"
|
||||
]
|
||||
}
|
||||
}
|
16
provider.tf
16
provider.tf
@ -1,14 +1,6 @@
|
||||
variable "pm_token_secret" {}
|
||||
variable "pm_token_id" {}
|
||||
variable "api_token" {}
|
||||
provider "proxmox" {
|
||||
pm_api_url = "https://172.31.71.69:8006/api2/json"
|
||||
pm_api_token_secret = var.pm_token_secret
|
||||
pm_api_token_id = var.pm_token_id
|
||||
pm_tls_insecure = true
|
||||
pm_parallel = 3
|
||||
pm_log_enable = true
|
||||
# pm_log_file = "terraform-proxmox-plugin.log"
|
||||
pm_log_levels = {
|
||||
_default = "info"
|
||||
}
|
||||
endpoint = "https://172.31.71.69:8006/api2/json"
|
||||
api_token = var.api_token
|
||||
insecure = true
|
||||
}
|
||||
|
16
variables.tf
16
variables.tf
@ -1,4 +1,4 @@
|
||||
|
||||
variable "user_password" {}
|
||||
variable "master_count" {
|
||||
default = 1
|
||||
}
|
||||
@ -8,18 +8,18 @@ variable "worker_count" {
|
||||
|
||||
variable "vmid" {
|
||||
type = number
|
||||
default = 500
|
||||
default = 1000
|
||||
}
|
||||
variable "proxmox_host" {
|
||||
variable "proxmox_node" {
|
||||
default = "papp-bunt"
|
||||
}
|
||||
variable "template_name" {
|
||||
default = "kube-template"
|
||||
}
|
||||
variable "ssh_keys" {
|
||||
default = <<EOF
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDqXa9fIVrQTGV4PMTn7ZyyeTLDVC+H4kV6zJzWBGGZf6DSoumJtbTaD6Ob3Czsf/NZ35iCPy2yrar3/Z7ccDrcfpxlNvj9l3NphEdXIebyQ8VmMWBy4pDPjE1erIEaL+J5RfjidB7xauticUIuNj0vtuvum/f09vGsohys+/llU7T+M42AeCTT5omw0DD8DPIUGxFwsgg0RxtD5ol1i3v0zVqwlbc7gnHws9/JCJZrhdHZWWkqvVQLCbRRCq4ZvRBcMdwJsBOeJpM9tkeJ7peZjAnPh7EIPkWh79+S65m6bsBe9N4lX5Qf2jxMSzgGeHhfJmd5O7UVqxH1a4M10e+CZOsWdTbMFEn+pcA04gehV9mL5gazZTMSjVFRzd/NUWi0Z6kecXW0HvxWzvKs+iZgaqL7qsDQUb23nMyvtiRO7JeTfdlo/dpb3Uz12VfwcHWAw1DpyJk3Sd1xV4sLke34F67e141ed72Piig6UuX2/aXm5Due781zIS8zBKBl4vXORbGjLLBo72RctB3xU9nJmkttdeSSF/yRbY7H3+bsvno/VUSAhnYWlGNrZBc+tTtqjYEQ3k/G8I8nwO4e1GDfo6w5G9dZQQ4YyV4v41NRp0TrtuGBpvGf9anMWUcp63f+fXMOZAnSVg42oZZUYWSPQTnoY1E5I3A6K4wrqEHt4w== siv@craptop
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCTFuQdp7JJzasMztOyvATBTXCuXE8SC39K7ap0K9hwdNNDl6oeM6jSv3KiL6AFGqjWHWrwpNaAPgM7FSXz9KJDixD0gx1nxfcTcF3nmbu3pCzgqRKdYZqvBlH6C+FRBC467MTBlxm8a5Ov5bKT0diseO4mG2Av+G7917mKvcgazfI95RxlllS3tD26xIloqCDutEMRL53rkzSYdaF3RPqLr4WmF7i7zk8I7H2EmreP4ZxUXoXEIV1LbQfgDErPWUishg0ivjR3eL0mKzqcGGCUi/WLS4nExihzYEzDKfZvsPDjF1bYBG3nSIybyKa4GZsOPHzpMjAXCXlmlCah21w14cs7HjS1eplWmdKjc1gsk6tRPHctewZDenuVaS6XC7/ZR6BhdlF4kNLwGB1C+NxG+P4BRpVN3m3MmxTLTvlvAW2LdBgMkmb7AP/Afs2+oyq+/SCw+9S1KYluW6oOoquK5ez9rDsu+HIu5H/1bxDOkzrWaXxpAzDTMeddmIC9JjWvW+GQUhHd0BNbPE9WiVZsGAFJmAHl0x16rh5tUP8yHPnkEqFPTq7HJaMzuGakcA6tfQkvOZfj9JHwB/f0p5wWc87gNc6cDmyu2RghneF8883UYCM7eRxaFMqSVRLgp4BTmfwLZpXjM4JIHlhOI+U0k7fyOUAbCTKsD173WMXPCQ== siver@A-sus_zenGarden
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8lNVARN9YgeHj9UmufdtJFoOJQlJpwwM52OqriUS1x0conCT2bgKBwoaV7Pmyk87tmd8pFZREMlEDch4yMu616WZmmE8chRg4gvd3qRB4TneWxhLoXJcMT3y+EF9Bu3WccQC2T2Q9VWGl2Nxd5ur0jRcQHruW1eOLpsZrQGaOceCLfMY55LynzWMWZgPedgGOlB5cq8NMwJsIcaTwrGXELzykM1cb1KgN9uzKvptxqG0QvxJG66VYpfdlCxIYpliflzO9UnWDg62zCtIC5yeSRk7hMWcyWf9fUVMt//wVH8dmSIx2bSRPBlEdwB/fTzClO27w71FbDMb6MFm2QHc0TranGghZbCkNLXS64kFpDlTgdXOWtXmzsFYGvhprWL5Z8ldEdUeptwe1/Iixwhrqlf9NVk5AOyg7j9LjLPw7voc8TAp0FLn8Ar2dbSVZlFr3a1X35mXj6VbRk51AkbxJbf9wc80FlPcm8sHWd7FSVqHseyoZusoEZPT9XthAoD3TbW0iseUcxBGZdSnjhGH4j5HBsgKUNHsW8LToWryXFh+o8Cm3DWsIIXX18lSP6u38JYsnTDdrO/kuQdEFRbX0C68XPfM5Y0LjlzxmS0+lTSalZWUMF75wMZ8HLs1iTm2kDHWSkweNsGts/YR9jFojQoZo7S5xyb/dq66xhUZIjQ== siv@proggnuc
|
||||
EOF
|
||||
default = [
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDqXa9fIVrQTGV4PMTn7ZyyeTLDVC+H4kV6zJzWBGGZf6DSoumJtbTaD6Ob3Czsf/NZ35iCPy2yrar3/Z7ccDrcfpxlNvj9l3NphEdXIebyQ8VmMWBy4pDPjE1erIEaL+J5RfjidB7xauticUIuNj0vtuvum/f09vGsohys+/llU7T+M42AeCTT5omw0DD8DPIUGxFwsgg0RxtD5ol1i3v0zVqwlbc7gnHws9/JCJZrhdHZWWkqvVQLCbRRCq4ZvRBcMdwJsBOeJpM9tkeJ7peZjAnPh7EIPkWh79+S65m6bsBe9N4lX5Qf2jxMSzgGeHhfJmd5O7UVqxH1a4M10e+CZOsWdTbMFEn+pcA04gehV9mL5gazZTMSjVFRzd/NUWi0Z6kecXW0HvxWzvKs+iZgaqL7qsDQUb23nMyvtiRO7JeTfdlo/dpb3Uz12VfwcHWAw1DpyJk3Sd1xV4sLke34F67e141ed72Piig6UuX2/aXm5Due781zIS8zBKBl4vXORbGjLLBo72RctB3xU9nJmkttdeSSF/yRbY7H3+bsvno/VUSAhnYWlGNrZBc+tTtqjYEQ3k/G8I8nwO4e1GDfo6w5G9dZQQ4YyV4v41NRp0TrtuGBpvGf9anMWUcp63f+fXMOZAnSVg42oZZUYWSPQTnoY1E5I3A6K4wrqEHt4w== siv@craptop",
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCTFuQdp7JJzasMztOyvATBTXCuXE8SC39K7ap0K9hwdNNDl6oeM6jSv3KiL6AFGqjWHWrwpNaAPgM7FSXz9KJDixD0gx1nxfcTcF3nmbu3pCzgqRKdYZqvBlH6C+FRBC467MTBlxm8a5Ov5bKT0diseO4mG2Av+G7917mKvcgazfI95RxlllS3tD26xIloqCDutEMRL53rkzSYdaF3RPqLr4WmF7i7zk8I7H2EmreP4ZxUXoXEIV1LbQfgDErPWUishg0ivjR3eL0mKzqcGGCUi/WLS4nExihzYEzDKfZvsPDjF1bYBG3nSIybyKa4GZsOPHzpMjAXCXlmlCah21w14cs7HjS1eplWmdKjc1gsk6tRPHctewZDenuVaS6XC7/ZR6BhdlF4kNLwGB1C+NxG+P4BRpVN3m3MmxTLTvlvAW2LdBgMkmb7AP/Afs2+oyq+/SCw+9S1KYluW6oOoquK5ez9rDsu+HIu5H/1bxDOkzrWaXxpAzDTMeddmIC9JjWvW+GQUhHd0BNbPE9WiVZsGAFJmAHl0x16rh5tUP8yHPnkEqFPTq7HJaMzuGakcA6tfQkvOZfj9JHwB/f0p5wWc87gNc6cDmyu2RghneF8883UYCM7eRxaFMqSVRLgp4BTmfwLZpXjM4JIHlhOI+U0k7fyOUAbCTKsD173WMXPCQ== siver@A-sus_zenGarden",
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8lNVARN9YgeHj9UmufdtJFoOJQlJpwwM52OqriUS1x0conCT2bgKBwoaV7Pmyk87tmd8pFZREMlEDch4yMu616WZmmE8chRg4gvd3qRB4TneWxhLoXJcMT3y+EF9Bu3WccQC2T2Q9VWGl2Nxd5ur0jRcQHruW1eOLpsZrQGaOceCLfMY55LynzWMWZgPedgGOlB5cq8NMwJsIcaTwrGXELzykM1cb1KgN9uzKvptxqG0QvxJG66VYpfdlCxIYpliflzO9UnWDg62zCtIC5yeSRk7hMWcyWf9fUVMt//wVH8dmSIx2bSRPBlEdwB/fTzClO27w71FbDMb6MFm2QHc0TranGghZbCkNLXS64kFpDlTgdXOWtXmzsFYGvhprWL5Z8ldEdUeptwe1/Iixwhrqlf9NVk5AOyg7j9LjLPw7voc8TAp0FLn8Ar2dbSVZlFr3a1X35mXj6VbRk51AkbxJbf9wc80FlPcm8sHWd7FSVqHseyoZusoEZPT9XthAoD3TbW0iseUcxBGZdSnjhGH4j5HBsgKUNHsW8LToWryXFh+o8Cm3DWsIIXX18lSP6u38JYsnTDdrO/kuQdEFRbX0C68XPfM5Y0LjlzxmS0+lTSalZWUMF75wMZ8HLs1iTm2kDHWSkweNsGts/YR9jFojQoZo7S5xyb/dq66xhUZIjQ== siv@proggnuc",
|
||||
]
|
||||
}
|
||||
|
@ -2,8 +2,8 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "telmate/proxmox"
|
||||
version = "2.9.14"
|
||||
source = "bpg/proxmox"
|
||||
version = "0.66.2"
|
||||
}
|
||||
external = {
|
||||
source = "hashicorp/external"
|
||||
|
Loading…
x
Reference in New Issue
Block a user