利用Python脚本自动化部署CentOS至U盘并实现虚拟机启动

在现代IT环境中,自动化部署操作系统能够极大地提高工作效率,减少人为错误。本文将详细介绍如何利用Python脚本自动化部署CentOS操作系统至U盘,并在虚拟机中实现启动。这一过程不仅适用于开发和测试环境,还可以为系统管理员提供一种高效的部署方案。

一、准备工作

  1. 硬件要求

    • 一台装有Python环境的计算机
    • 一个可用的U盘(建议容量至少8GB)
    • 虚拟机软件(如VMware Workstation或VirtualBox)
  2. 软件要求

    • Python 3.x
    • CentOS ISO镜像文件
    • 相关Python库(如os, subprocess, shutil等)

二、编写Python脚本

  1. 下载CentOS ISO镜像
   import requests

   def download_iso(url, filename):
       response = requests.get(url, stream=True)
       with open(filename, 'wb') as f:
           for chunk in response.iter_content(chunk_size=8192):
               f.write(chunk)
       print(f"下载完成: {filename}")

   iso_url = "https://example.com/centos.iso"
   iso_filename = "centos.iso"
   download_iso(iso_url, iso_filename)
  1. 制作U盘启动盘
   import os
   import subprocess

   def create_usb_boot_drive(iso_filename, usb_device):
       # 检查U盘是否已挂载
       if os.path.ismount(usb_device):
           print("U盘已挂载,请先卸载")
           return

       # 使用dd命令制作启动盘
       cmd = f"sudo dd if={iso_filename} of={usb_device} bs=4M status=progress"
       subprocess.run(cmd, shell=True)
       print("U盘启动盘制作完成")

   usb_device = "/dev/sdb"  # 请根据实际情况修改
   create_usb_boot_drive(iso_filename, usb_device)
  1. 配置虚拟机
   import xml.etree.ElementTree as ET

   def configure_vm(vm_name, iso_path, usb_device):
       # 创建虚拟机配置文件
       vm_config = f"""
       <domain type='kvm'>
           <name>{vm_name}</name>
           <memory unit='GiB'>2</memory>
           <vcpu placement='static'>2</vcpu>
           <os>
               <type arch='x86_64' machine='pc-i440fx-2.8'>hvm</type>
               <boot dev='hd'/>
               <boot dev='cdrom'/>
           </os>
           <devices>
               <disk type='file' device='disk'>
                   <driver name='qemu' type='qcow2'/>
                   <source file='/var/lib/libvirt/images/{vm_name}.qcow2'/>
                   <target dev='vda' bus='virtio'/>
               </disk>
               <disk type='block' device='cdrom'>
                   <driver name='qemu' type='raw'/>
                   <source dev='{usb_device}'/>
                   <target dev='sda' bus='ide'/>
               </disk>
           </devices>
       </domain>
       """
       tree = ET.ElementTree(ET.fromstring(vm_config))
       tree.write(f"{vm_name}.xml")
       print(f"虚拟机配置文件已生成: {vm_name}.xml")

   vm_name = "CentOS_VM"
   configure_vm(vm_name, iso_filename, usb_device)

三、执行脚本

将上述代码保存为一个Python脚本文件(如deploy_centos.py),然后在终端中执行:

python deploy_centos.py

四、启动虚拟机

  1. 导入虚拟机配置

使用virsh命令导入生成的虚拟机配置文件:

   sudo virsh define CentOS_VM.xml
  1. 启动虚拟机
   sudo virsh start CentOS_VM

五、总结

通过上述步骤,我们成功利用Python脚本实现了CentOS操作系统的自动化部署至U盘,并在虚拟机中启动。这一过程不仅提高了部署效率,还减少了手动操作的复杂性。未来,可以进一步扩展脚本功能,如自动配置网络、安装常用软件等,以适应更复杂的应用场景。