nix-config/opentofu/nodes/mikoshi/main.tf

81 lines
1.6 KiB
HCL

terraform {
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "~> 0.61.0"
}
}
}
provider "proxmox" {
# Endpoint and credentials will be picked up from environment variables
# or passed via the bootstrap script.
# PROXMOX_VE_ENDPOINT
# PROXMOX_VE_USERNAME
# PROXMOX_VE_PASSWORD
# PROXMOX_VE_INSECURE=true
}
module "proxmox_node" {
source = "../../modules/proxmox-node"
node_name = "mikoshi"
data_disk_id = "nvme-KXG80ZNV2T04_NVMe_KIOXIA_2048GB_241C11Y5EHAK"
zfs_pool_name = "data"
}
output "control_center_api_token" {
value = module.proxmox_node.control_center_api_token
sensitive = true
description = "The secret API token for control-center@pve."
}
resource "proxmox_virtual_environment_vm" "control_center" {
depends_on = [module.proxmox_node]
name = "izanagi"
description = "Managed by OpenTofu - GitOps Control Center"
tags = ["infrastructure", "gitops"]
node_name = "mikoshi"
vm_id = 100001000
on_boot = true
pool_id = "core"
cpu {
cores = 2
type = "x86-64-v2-AES"
}
memory {
dedicated = 2048
}
agent {
enabled = true
}
network_device {
bridge = "vmbr0"
}
clone {
vm_id = 9000
full = true
}
# Cloud-Init for initial SSH access and SOPS age key injection
initialization {
ip_config {
ipv4 {
address = "dhcp"
}
}
user_account {
username = "gh0st"
keys = [
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIHOoTp+e6qWGn4Sco5CZ6G0zrX5NAQBpLlDVirncJ/HqAAAABHNzaDo="
]
}
}
}