99 lines
2.1 KiB
Python
99 lines
2.1 KiB
Python
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()
|