from pathlib import Path from pprint import pprint from proxmoxer import ProxmoxAPI PROXMOX_HOST = 'pve.office.basealt.ru' PROXMOX_USER = 'stepchenkoas@BaseALT' PROXMOX_PASSWORD = Path('pve_secret').read_text().strip() def create_vm( proxmox, node=None, vmid=None, name=None, prefix='stepchenkoas', cores=2, memory=2048, disk_size=16, ): if node is None: nodes = proxmox.nodes.get() nodes = list(filter(lambda node: node['status'] == 'online', nodes)) node = min(nodes, key=lambda node: node['disk'])['node'] if vmid is None: vmid = proxmox.cluster.get('nextid') if name is None: name = f'{prefix}-{vmid}' proxmox.nodes(node).qemu.post( node=node, vmid=vmid, description='This VM was created automatically through Proxmox VE API', cores=cores, cpu='host', memory=memory, name=name, net0='virtio,bridge=vmbr0,tag=103,firewall=1', ostype='l26', pool='Virt_LAB', #alt-server-v-10.1-rc3-x86_64.iso sata2='templates:iso/alt-server-v-10.1-rc3-x86_64.iso,media=cdrom', scsi0=f'rbd-storage:{disk_size},discard=on', scsihw='virtio-scsi-pci', sockets=1, ) print(f'VM {vmid} was created successfully!') def delete_vm( proxmox, node, vmid, ): proxmox.nodes(node).qemu(vmid).delete( node=node, vmid=vmid, ) print(f'VM {vmid} was deleted successfully!') def clone_template( proxmox, node: str, vmid: int, newid: int = None, prefix: int ='stepchenkoas', ): if newid is None: newid = proxmox.cluster.get('nextid') return proxmox.nodes(node).qemu(vmid).clone.post( newid=newid, node=node, vmid=vmid, format='raw', full=1, name=f'{prefix}-test-clone', pool='Virt_LAB', storage='rbd-storage', target=node, ) def main(): proxmox = ProxmoxAPI( PROXMOX_HOST, user=PROXMOX_USER, password=PROXMOX_PASSWORD, verify_ssl=False ) proxmox.logout() if __name__ == '__main__': main()