diff --git a/proxmox_tools.py b/proxmox_tools.py index 3437866..44ec81b 100644 --- a/proxmox_tools.py +++ b/proxmox_tools.py @@ -10,24 +10,37 @@ Usage: tools = Tools() print(tools.connection()) print(tools.vm_create(vmid=200, name="ubuntu", ciuser="ubuntu", cipassword="1234567")) + +⚠️ Важно: токен PROXMOX_TOKEN_VALUE задаётся через переменную окружения! + export PROXMOX_TOKEN_VALUE="ваш-токен" """ import json +import os import re import time import requests # ============================================================ -# CONFIG - change as needed +# CONFIG — из переменных окружения (с запасными значениями) # ============================================================ -PROXMOX_HOST = "https://192.168.31.2:8006" -PROXMOX_USER = "root@pam" -PROXMOX_TOKEN_NAME = "openwebui-token" -PROXMOX_TOKEN_VALUE = "7aba7743-0133-494b-9dd7-9715f55e5dca" -VERIFY_SSL = False -DEFAULT_NODE = "pve" -DEFAULT_STORAGE = "local" -DEFAULT_BRIDGE = "vmbr0" +PROXMOX_HOST = os.getenv("PROXMOX_HOST", "https://192.168.31.2:8006") +PROXMOX_USER = os.getenv("PROXMOX_USER", "root@pam") +PROXMOX_TOKEN_NAME = os.getenv("PROXMOX_TOKEN_NAME", "openwebui-token") +PROXMOX_TOKEN_VALUE = os.getenv("PROXMOX_TOKEN_VALUE", "") +if not PROXMOX_TOKEN_VALUE: + raise RuntimeError( + "PROXMOX_TOKEN_VALUE not set! " + "Export it as environment variable, e.g.:\n" + " export PROXMOX_TOKEN_VALUE='7aba7743-0133-494b-9dd7-9715f55e5dca'" + ) + +VERIFY_SSL = os.getenv("PROXMOX_VERIFY_SSL", "false").lower() in ("true", "1", "yes") +DEFAULT_NODE = os.getenv("PROXMOX_NODE", "pve") +DEFAULT_STORAGE = os.getenv("PROXMOX_STORAGE", "local") +DEFAULT_BRIDGE = os.getenv("PROXMOX_BRIDGE", "vmbr0") +# Шаблон для клонирования VM (по умолчанию ID:1000 — cloud-init) +DEFAULT_TEMPLATE_VMID = int(os.getenv("PROXMOX_TEMPLATE_VMID", "1000")) # ============================================================ # INTERNAL HELPERS @@ -537,7 +550,7 @@ class Tools: def vm_create_from_template( vmid, name, - template_vmid=999, + template_vmid=DEFAULT_TEMPLATE_VMID, full=True, memory=None, cores=None, @@ -552,14 +565,14 @@ class Tools: ): """ Create a new VM by cloning from a template. - Default template: VM #999 (ubuntu-2404-ci). + Default template: VM #1000 (cloud-init). Cloud-init params (for guest OS user setup): ciuser: username in the guest (e.g. "ubuntu") cipassword: password for the user sshkeys: SSH public keys (newline-separated string) - FIXED: "start" parameter is NOT sent to /clone - + FIXED: "start" parameter is NOT sent to /clone — startup is done via separate API call after clone completes. """ try: @@ -663,7 +676,7 @@ class Tools: def vm_create( vmid, name, - template_vmid=999, + template_vmid=DEFAULT_TEMPLATE_VMID, memory=4096, cores=2, disk_size="32G", @@ -685,7 +698,7 @@ class Tools: Universal VM creation. Modes: - 1. From template (default): clones VM #999 (ubuntu-2404-ci) + 1. From template (default): clones VM #1000 (cloud-init) 2. From ISO: template_vmid=None, iso="local:iso/image.iso" Cloud-init params (for mode 1):