40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from vboxapi import VirtualBoxManager
|
|
|
|
def create_vm(vm_name, base_image_path, memory_size_mb=1024, cpus=1):
|
|
# Verbindung zum VirtualBox-Manager herstellen
|
|
mgr = VirtualBoxManager(None, None)
|
|
vbox_mgr = mgr.vboxManager
|
|
|
|
# Festplatten-Controller erstellen
|
|
storage_ctl = vbox_mgr.getHardDiskController("SATA")
|
|
|
|
# Festplatte erstellen und an den Controller anhängen
|
|
base_image = vbox_mgr.createHardDisk("VDI", base_image_path)
|
|
storage_ctl.attachDevice(base_image)
|
|
|
|
# VM erstellen
|
|
vm = vbox_mgr.createMachine("", vm_name, [], "Linux", "Ubuntu_64", [])
|
|
|
|
# Speicher hinzufügen
|
|
vm.memorySize = memory_size_mb
|
|
|
|
# CPU-Einstellungen hinzufügen
|
|
vm.cpuCount = cpus
|
|
|
|
# Netzwerkadapter hinzufügen (optional)
|
|
nic = vm.getNetworkAdapter(0)
|
|
nic.attachmentType = mgr.constants.NetworkAttachmentType_Bridged
|
|
|
|
# VM starten und anhalten, um Einstellungen zu speichern
|
|
session = mgr.mgr.getSessionObject(vbox_mgr)
|
|
progress = vm.launchVMProcess(session, "gui", "")
|
|
progress.waitForCompletion(-1)
|
|
session.console.powerDown()
|
|
session.unlockMachine()
|
|
|
|
print(f"VM '{vm_name}' wurde erfolgreich erstellt.")
|
|
|
|
if __name__ == "__main__":
|
|
# Beispielaufruf
|
|
create_vm("MeineVM", "/Pfad/zur/basis_disk.vdi")
|