rocky #1
@@ -2,11 +2,11 @@
|
||||
timezone: Europe/Moscow
|
||||
|
||||
users:
|
||||
- name: rocky
|
||||
- name: iurii
|
||||
groups: [wheel]
|
||||
shell: /bin/bash
|
||||
lock_passwd: false
|
||||
passwd: "$6$M8xzsYT0lwWjlcdH$HJRhw0rBb2WowCbqg03/WvMUlte0j5SLs9tAVCxCukEqWAt7XG0ceWYc5GRUBmRxFRTbcEDrdCVTXu5jIxN2f0"
|
||||
passwd: "$6$Zc8nwvtw0Kns5.sD$FpQ4aBSeGogefqjM4we4U5QQd4YBtC98tuG3rR4j9ZmbtC1kyFf2sY/IodYW3wG.U81aEntlZrtOTOqw3ZcOc0"
|
||||
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
|
||||
ssh_authorized_keys:
|
||||
- ${ssh_key}
|
||||
@@ -19,13 +19,3 @@ packages:
|
||||
runcmd:
|
||||
- systemctl enable --now qemu-guest-agent
|
||||
- hostnamectl set-hostname ${hostname}
|
||||
- systemctl disable --now packagekit || true
|
||||
- systemctl disable --now ModemManager || true
|
||||
- systemctl disable --now multipathd || true
|
||||
|
||||
write_files:
|
||||
- path: /etc/motd
|
||||
content: |
|
||||
Managed by OpenTofu
|
||||
|
||||
final_message: "cloud-init finished"
|
||||
@@ -99,7 +99,8 @@
|
||||
locals {
|
||||
nodes = {
|
||||
k8s-master-1 = {
|
||||
cloudinit = "master.yml"
|
||||
cloudinit = "rocky.yml"
|
||||
image_file = "import/rocky9.qcow2"
|
||||
index = 1
|
||||
cpu = var.worker_cpu
|
||||
memory = 4092
|
||||
@@ -115,45 +116,45 @@ locals {
|
||||
gateway = "192.168.20.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
k8s-worker-1 = {
|
||||
cloudinit = "worker.yml"
|
||||
index = 2
|
||||
cpu = var.worker_cpu
|
||||
memory = 8192
|
||||
disk = var.worker_disk
|
||||
datastore = var.worker_datastore
|
||||
|
||||
network_devices = [
|
||||
{
|
||||
bridge = var.node_bridge
|
||||
vlan_id = 20
|
||||
ip = "192.168.20.22"
|
||||
cidr = 24
|
||||
gateway = "192.168.20.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
k8s-worker-2 = {
|
||||
cloudinit = "worker.yml"
|
||||
index = 3
|
||||
cpu = var.worker_cpu
|
||||
memory = 8192
|
||||
disk = var.worker_disk
|
||||
datastore = var.worker_datastore
|
||||
|
||||
network_devices = [
|
||||
{
|
||||
bridge = var.node_bridge
|
||||
vlan_id = 20
|
||||
ip = "192.168.20.23"
|
||||
cidr = 24
|
||||
gateway = "192.168.20.1"
|
||||
},
|
||||
{
|
||||
bridge = "vmbr0"
|
||||
}
|
||||
]
|
||||
}
|
||||
# k8s-worker-1 = {
|
||||
# cloudinit = "worker.yml"
|
||||
# index = 2
|
||||
# cpu = var.worker_cpu
|
||||
# memory = 8192
|
||||
# disk = var.worker_disk
|
||||
# datastore = var.worker_datastore
|
||||
|
||||
# network_devices = [
|
||||
# {
|
||||
# bridge = var.node_bridge
|
||||
# vlan_id = 20
|
||||
# ip = "192.168.20.22"
|
||||
# cidr = 24
|
||||
# gateway = "192.168.20.1"
|
||||
# }
|
||||
# ]
|
||||
# },
|
||||
# k8s-worker-2 = {
|
||||
# cloudinit = "worker.yml"
|
||||
# index = 3
|
||||
# cpu = var.worker_cpu
|
||||
# memory = 8192
|
||||
# disk = var.worker_disk
|
||||
# datastore = var.worker_datastore
|
||||
|
||||
# network_devices = [
|
||||
# {
|
||||
# bridge = var.node_bridge
|
||||
# vlan_id = 20
|
||||
# ip = "192.168.20.23"
|
||||
# cidr = 24
|
||||
# gateway = "192.168.20.1"
|
||||
# },
|
||||
# {
|
||||
# bridge = "vmbr0"
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,7 @@ resource "proxmox_virtual_environment_file" "cloudinit" {
|
||||
|
||||
resource "proxmox_virtual_environment_vm" "nodes" {
|
||||
for_each = local.nodes
|
||||
tags = ["tofu"]
|
||||
|
||||
name = local.hostname_map[each.key]
|
||||
node_name = var.proxmox_node
|
||||
@@ -48,6 +49,8 @@ resource "proxmox_virtual_environment_vm" "nodes" {
|
||||
|
||||
cpu {
|
||||
cores = each.value.cpu
|
||||
type = "host"
|
||||
|
||||
}
|
||||
|
||||
memory {
|
||||
@@ -63,12 +66,24 @@ resource "proxmox_virtual_environment_vm" "nodes" {
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
dynamic "clone" {
|
||||
for_each = try(each.value.template_id, null) == null ? [] : [each.value.template_id]
|
||||
|
||||
content {
|
||||
vm_id = clone.value
|
||||
}
|
||||
}
|
||||
|
||||
dynamic "disk" {
|
||||
for_each = try(each.value.template_id, null) == null ? [1] : []
|
||||
|
||||
content {
|
||||
datastore_id = each.value.datastore
|
||||
import_from = "${var.image_datastore}:${var.image_file}"
|
||||
interface = var.disk_interface
|
||||
size = each.value.disk
|
||||
}
|
||||
}
|
||||
|
||||
dynamic "disk" {
|
||||
for_each = try([each.value.data_disk], [])
|
||||
|
||||
@@ -12,6 +12,7 @@ variable "nodes" {
|
||||
vmid = optional(number)
|
||||
data_disk = optional(number)
|
||||
cloudinit = optional(string)
|
||||
template_id = optional(number)
|
||||
|
||||
network_devices = list(object({
|
||||
bridge = string
|
||||
|
||||
Reference in New Issue
Block a user