add template vm in proxmox [ci skip]
This commit is contained in:
parent
e385407094
commit
222d3dd2b6
4 changed files with 96 additions and 38 deletions
22
.terraform.lock.hcl
generated
22
.terraform.lock.hcl
generated
|
|
@ -100,3 +100,25 @@ provider "registry.terraform.io/hashicorp/random" {
|
|||
"zh:eff58323099f1bd9a0bec7cb04f717e7f1b2774c7d612bf7581797e1622613a0",
|
||||
]
|
||||
}
|
||||
|
||||
provider "registry.terraform.io/telmate/proxmox" {
|
||||
version = "3.0.2-rc04"
|
||||
constraints = "3.0.2-rc04"
|
||||
hashes = [
|
||||
"h1:8tyqYSoNfrqIh0ICT7abFOQVcyGGXry2qFCJVMoc4TE=",
|
||||
"zh:00586a3e02061734f5ff4c309696ec1bbd6e00a7ed1281c44626f02929417f6e",
|
||||
"zh:05af12aababd0a67a95309a803123f3c238b16ecdb73dc59c8d9c3d4a0b691c5",
|
||||
"zh:4b6457bd0138f5c66c8b7043bdbffe3b8abcce2383293d77f653dbd77d14428f",
|
||||
"zh:7b1b6e76d6b03c7829b8dadeb30de236782be314f5146d9f29ee12bd01961d7a",
|
||||
"zh:87c21e0a8244b73c62ad3221773ec1c72fb918e0025b0664183a8ad8bebeb5bc",
|
||||
"zh:954997c550285dfc167977683b97b045dd62923c251fad32c4ca81b564c2005f",
|
||||
"zh:98781ef0199877580256e9f9a7f0666107f76af23f54f67d6392a66a6f5001b5",
|
||||
"zh:9fc4dbd1752e2b9125223be2dd25597c0e6d534aa784c4829af3c3e3e58eb973",
|
||||
"zh:a3f672019aee2d45c202668b95c48113e3c50001b740bd48956738ad1418c6b7",
|
||||
"zh:a539852a4034132442e6dc6f644444994d83b0dc7a4d30bbe6464de420cfdf2d",
|
||||
"zh:aade0b50a559a1da683c49ec8527e5e66b12ed42d4b1f10e69b25cbbf6c67805",
|
||||
"zh:bdb7c2b78cfe039247948fa75fad49f871f8a8bb9b969aec4c45a24edc80ab0f",
|
||||
"zh:c16209a6748f87a379a5a3132ca4f471a4807bd478664499593e09433ba39b7b",
|
||||
"zh:cb015fb4a0a50d151c35c6a3505cdf7a337edd0b65eba82a43c8142c523adfb8",
|
||||
]
|
||||
}
|
||||
|
|
|
|||
62
main.tf
62
main.tf
|
|
@ -114,6 +114,9 @@ variable "onlyoffice_jwt_token" { type = string }
|
|||
variable "xray_reality_clients" { type = list(map(string)) }
|
||||
variable "xray_reality_private_key" { type = string }
|
||||
variable "xray_reality_short_ids" { type = list(string) }
|
||||
variable "proxmox_pm_api_url" { type = string }
|
||||
variable "proxmox_pm_api_token_id" { type = string }
|
||||
variable "proxmox_pm_api_token_secret" { type = string }
|
||||
|
||||
|
||||
# data "terraform_remote_state" "foo" {
|
||||
|
|
@ -137,15 +140,14 @@ provider "helm" {
|
|||
config_path = var.prod ? "" : "~/.kube/config"
|
||||
}
|
||||
}
|
||||
# TODO: add DEFCON levels
|
||||
|
||||
# provider "proxmox" {
|
||||
# endpoint = "https://10.0.10.105:8006/api2/json"
|
||||
# username = "root@pam"
|
||||
# password = "to-change"
|
||||
# insecure = true
|
||||
# tmp_dir = "/var/tmp"
|
||||
# }
|
||||
provider "proxmox" {
|
||||
pm_api_url = var.proxmox_pm_api_url
|
||||
pm_api_token_id = var.proxmox_pm_api_token_id
|
||||
pm_api_token_secret = var.proxmox_pm_api_token_secret
|
||||
pm_tls_insecure = true
|
||||
}
|
||||
# TODO: add DEFCON levels
|
||||
|
||||
# resource "proxmox_virtual_environment_network_linux_vlan" "vlan1" {
|
||||
# node_name = "pve"
|
||||
|
|
@ -155,43 +157,27 @@ provider "helm" {
|
|||
# }
|
||||
|
||||
|
||||
# resource "proxmox_vm_qemu" "k8s-master-pve" {
|
||||
# name = "test"
|
||||
# target_node = "pve"
|
||||
# # iso = "ubuntu-22.04.3-live-server-amd64.iso"
|
||||
# iso = "local:iso/ubuntu-22.04.3-live-server-amd64.iso"
|
||||
# agent = 1
|
||||
# os_type = "ubuntu"
|
||||
# cores = 4
|
||||
# sockets = 1
|
||||
# cpu = "host"
|
||||
# memory = 2048
|
||||
# scsihw = "virtio-scsi-pci"
|
||||
# bootdisk = "scsi0"
|
||||
# disk {
|
||||
# slot = 0
|
||||
# # set disk size here. leave it small for testing because expanding the disk takes time.
|
||||
# size = "10G"
|
||||
# type = "scsi"
|
||||
# storage = "local-lvm"
|
||||
# iothread = 0
|
||||
# }
|
||||
# }
|
||||
|
||||
# Main module to init infra from
|
||||
# module "pxe_server" {
|
||||
module "template-vm" {
|
||||
source = "./modules/create-template-vm"
|
||||
proxmox_host = "192.168.1.127"
|
||||
proxmox_user = "root" # SSH user on Proxmox host
|
||||
cloud_image_url = "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
|
||||
image_path = "/var/lib/vz/template/iso/jammy-server-cloudimg-amd64.img"
|
||||
template_id = 8000
|
||||
template_name = "ubuntu-2204-cloudinit-template"
|
||||
}
|
||||
|
||||
# module "pxe-server" {
|
||||
# source = "./modules/create-vm"
|
||||
# vm_name = "pxe-server"
|
||||
# network = "dManagementVMs"
|
||||
# # provisioner_command = "${var.ansible_prefix} -t linux/pxe-server/add-distro"
|
||||
# provisioner_command = "# no provisioner needed #" # Noop until ubuntu autoinstall is setup
|
||||
|
||||
# vsphere_password = var.vsphere_password
|
||||
# vsphere_user = var.vsphere_user
|
||||
# vsphere_server = var.vsphere_server
|
||||
# cdrom_path = "ISO/ubuntu-server-20.04.1.iso"
|
||||
# vm_disk_size = 50
|
||||
# vm_mac_address = "00:50:56:87:4a:2d"
|
||||
# cdrom_path = "ISO/ubuntu-server-20.04.1.iso"
|
||||
# vm_disk_size = 50
|
||||
# vm_mac_address = "00:50:56:87:4a:2d"
|
||||
# }
|
||||
|
||||
# module "k8s_master" {
|
||||
|
|
|
|||
41
modules/create-template-vm/main.tf
Normal file
41
modules/create-template-vm/main.tf
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
variable "proxmox_host" { type = string }
|
||||
variable "proxmox_user" { type = string }
|
||||
variable "cloud_image_url" { type = string }
|
||||
variable "image_path" { type = string }
|
||||
variable "template_id" {
|
||||
type = number
|
||||
default = 8000
|
||||
}
|
||||
variable "template_name" { type = string }
|
||||
|
||||
# SSH connection to Proxmox
|
||||
resource "null_resource" "create_template_remote" {
|
||||
connection {
|
||||
type = "ssh"
|
||||
user = var.proxmox_user
|
||||
host = var.proxmox_host
|
||||
private_key = file("~/.ssh/id_ed25519")
|
||||
}
|
||||
|
||||
# Commands executed *on Proxmox host*
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"set -e",
|
||||
# download the cloud image if missing
|
||||
"if [ ! -f ${var.image_path} ]; then wget -O ${var.image_path} ${var.cloud_image_url}; fi",
|
||||
# create template only if not existing
|
||||
"if ! qm status ${var.template_id} >/dev/null 2>&1; then",
|
||||
" echo 'Creating cloud-init template...';",
|
||||
" qm create ${var.template_id} --name ${var.template_name} --memory 8192 --cores 8 --net0 virtio,bridge=vmbr0;",
|
||||
" qm importdisk ${var.template_id} ${var.image_path} local-lvm;",
|
||||
" qm set ${var.template_id} --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-${var.template_id}-disk-0;",
|
||||
" qm set ${var.template_id} --ide2 local-lvm:cloudinit;",
|
||||
" qm set ${var.template_id} --boot c --bootdisk scsi0;",
|
||||
" qm set ${var.template_id} --serial0 socket --vga serial0;",
|
||||
" qm template ${var.template_id};",
|
||||
"else",
|
||||
" echo 'Template ${var.template_id} already exists — skipping.';",
|
||||
"fi"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -38,3 +38,12 @@
|
|||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "telmate/proxmox"
|
||||
version = "3.0.2-rc04"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue