Initial commit
This commit is contained in:
138
skills/proxmox-infrastructure/examples/01-basic-vm/main.tf
Normal file
138
skills/proxmox-infrastructure/examples/01-basic-vm/main.tf
Normal file
@@ -0,0 +1,138 @@
|
||||
# =============================================================================
|
||||
# Basic VM Deployment Example
|
||||
# =============================================================================
|
||||
# This is a minimal example for learning the VM module. It shows only the
|
||||
# required parameters with sensible defaults for everything else.
|
||||
#
|
||||
# Use this as a starting point for understanding the module, then refer to
|
||||
# Triangulum-Prime examples for production-ready configurations.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0"
|
||||
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "bpg/proxmox"
|
||||
version = "~> 0.69"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Provider configuration (credentials from environment)
|
||||
provider "proxmox" {
|
||||
endpoint = var.proxmox_endpoint
|
||||
# Uses PROXMOX_VE_API_TOKEN or PROXMOX_VE_USERNAME/PASSWORD from environment
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# Basic VM Module Usage
|
||||
# =============================================================================
|
||||
|
||||
module "basic_vm" {
|
||||
source = "github.com/basher83/Triangulum-Prime//terraform-bgp-vm?ref=vm/1.0.1"
|
||||
|
||||
# === REQUIRED: Basic Configuration ===
|
||||
vm_type = "clone" # Clone from existing template
|
||||
pve_node = var.proxmox_node # Which Proxmox node to deploy on
|
||||
vm_name = var.vm_name # Name of the VM
|
||||
|
||||
# === REQUIRED: Clone Source ===
|
||||
# Specify which template to clone from
|
||||
src_clone = {
|
||||
datastore_id = "local-lvm"
|
||||
tpl_id = 9000 # Your template VMID
|
||||
}
|
||||
|
||||
# === REQUIRED: Disk Configuration ===
|
||||
# Define the VM's disk
|
||||
vm_disk = {
|
||||
scsi0 = {
|
||||
datastore_id = "local-lvm"
|
||||
size = 20 # GB
|
||||
main_disk = true
|
||||
# Note: file_format, iothread, ssd, discard use optimal defaults
|
||||
}
|
||||
}
|
||||
|
||||
# === REQUIRED: Network Configuration ===
|
||||
# At minimum, configure one network interface
|
||||
vm_net_ifaces = {
|
||||
net0 = {
|
||||
bridge = "vmbr0"
|
||||
ipv4_addr = "${var.ip_address}/24"
|
||||
ipv4_gw = var.gateway
|
||||
# Note: model defaults to "virtio", vlan_id defaults to null
|
||||
}
|
||||
}
|
||||
|
||||
# === REQUIRED: Cloud-init Configuration ===
|
||||
vm_init = {
|
||||
datastore_id = "local-lvm"
|
||||
|
||||
user = {
|
||||
name = var.username
|
||||
keys = [var.ssh_public_key]
|
||||
}
|
||||
|
||||
dns = {
|
||||
domain = "spaceships.work"
|
||||
servers = ["192.168.3.1"]
|
||||
}
|
||||
}
|
||||
|
||||
# === REQUIRED: EFI Disk (for UEFI boot) ===
|
||||
vm_efi_disk = {
|
||||
datastore_id = "local-lvm"
|
||||
# file_format defaults to "raw"
|
||||
# type defaults to "4m"
|
||||
}
|
||||
|
||||
# === OPTIONAL OVERRIDES ===
|
||||
# These are only shown here for educational purposes.
|
||||
# The module already provides these defaults - you DON'T need to specify them!
|
||||
|
||||
# CPU (defaults to 2 cores, "host" type)
|
||||
# vm_cpu = {
|
||||
# cores = 2
|
||||
# type = "host"
|
||||
# }
|
||||
|
||||
# Memory (defaults to 2048 MB / 2GB)
|
||||
# vm_mem = {
|
||||
# dedicated = 2048
|
||||
# }
|
||||
|
||||
# Guest agent (defaults to enabled)
|
||||
# vm_agent = {
|
||||
# enabled = true
|
||||
# }
|
||||
|
||||
# VM start behavior (defaults: start on deploy, start on boot)
|
||||
# vm_start = {
|
||||
# on_deploy = true
|
||||
# on_boot = true
|
||||
# }
|
||||
|
||||
# === Learn More ===
|
||||
# See module DEFAULTS.md for complete list of defaults:
|
||||
# https://github.com/basher83/Triangulum-Prime/blob/main/terraform-bgp-vm/DEFAULTS.md
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# Outputs
|
||||
# =============================================================================
|
||||
|
||||
output "vm_id" {
|
||||
description = "The ID of the created VM"
|
||||
value = module.basic_vm.vm_id
|
||||
}
|
||||
|
||||
output "vm_name" {
|
||||
description = "The name of the created VM"
|
||||
value = module.basic_vm.vm_name
|
||||
}
|
||||
|
||||
output "vm_ipv4_addresses" {
|
||||
description = "IPv4 addresses assigned to the VM"
|
||||
value = module.basic_vm.ipv4_addresses
|
||||
}
|
||||
Reference in New Issue
Block a user