81 lines
1.6 KiB
HCL
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="
|
|
]
|
|
}
|
|
}
|
|
}
|