创建虚拟机自动化脚本

1、模版xml

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit node1
or other application using the libvirt API.
-->

<domain type=‘kvm‘>
  <name>node1</name>
  <uuid>fb0d1a74-26c5-4734-87b9-3d8f87ea5eb4</uuid>
  <memory unit=‘KiB‘>1048576</memory>
  <currentMemory unit=‘KiB‘>1048576</currentMemory>
  <vcpu placement=‘static‘>1</vcpu>
  <os>
    <type arch=‘x86_64‘ machine=‘pc-i440fx-rhel7.0.0‘>hvm</type>
    <boot dev=‘hd‘/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode=‘custom‘ match=‘exact‘>
    <model fallback=‘allow‘>Haswell-noTSX</model>
  </cpu>
  <clock offset=‘utc‘>
    <timer name=‘rtc‘ tickpolicy=‘catchup‘/>
    <timer name=‘pit‘ tickpolicy=‘delay‘/>
    <timer name=‘hpet‘ present=‘no‘/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled=‘no‘/>
    <suspend-to-disk enabled=‘no‘/>
  </pm>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type=‘file‘ device=‘disk‘>
      <driver name=‘qemu‘ type=‘qcow2‘/>
      <source file=‘/var/lib/libvirt/images/centos7.0.qcow2‘/>
      <target dev=‘hda‘ bus=‘ide‘/>
      <address type=‘drive‘ controller=‘0‘ bus=‘0‘ target=‘0‘ unit=‘0‘/>
    </disk>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-ehci1‘>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x7‘/>
    </controller>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-uhci1‘>
      <master startport=‘0‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘ multifunction=‘on‘/>
    </controller>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-uhci2‘>
      <master startport=‘2‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x1‘/>
    </controller>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-uhci3‘>
      <master startport=‘4‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x2‘/>
    </controller>
    <controller type=‘pci‘ index=‘0‘ model=‘pci-root‘/>
    <controller type=‘ide‘ index=‘0‘>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x01‘ function=‘0x1‘/>
    </controller>
    <controller type=‘virtio-serial‘ index=‘0‘>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x05‘ function=‘0x0‘/>
    </controller>
    <interface type=‘network‘>
      <mac address=‘52:54:00:ff:01:01‘/>
      <source network=‘private1‘/>
      <model type=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
    </interface>
    <interface type=‘network‘>
      <mac address=‘52:54:00:7e:01:02‘/>
      <source network=‘private2‘/>
      <model type=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x08‘ function=‘0x0‘/>
    </interface>
    <interface type=‘network‘>
      <mac address=‘52:54:00:b3:01:03‘/>
      <source network=‘public1‘/>
      <model type=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x09‘ function=‘0x0‘/>
    </interface>
    <interface type=‘network‘>
      <mac address=‘52:54:00:62:01:04‘/>
      <source network=‘public2‘/>
      <model type=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x0a‘ function=‘0x0‘/>
    </interface>
    <serial type=‘pty‘>
      <target port=‘0‘/>
    </serial>
    <console type=‘pty‘>
      <target type=‘serial‘ port=‘0‘/>
    </console>
    <channel type=‘spicevmc‘>
      <target type=‘virtio‘ name=‘com.redhat.spice.0‘/>
      <address type=‘virtio-serial‘ controller=‘0‘ bus=‘0‘ port=‘1‘/>
    </channel>
    <input type=‘mouse‘ bus=‘ps2‘/>
    <input type=‘keyboard‘ bus=‘ps2‘/>
    <graphics type=‘spice‘ autoport=‘yes‘>
      <image compression=‘off‘/>
    </graphics>
    <sound model=‘ich6‘>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x04‘ function=‘0x0‘/>
    </sound>
    <video>
      <model type=‘qxl‘ ram=‘65536‘ vram=‘65536‘ vgamem=‘16384‘ heads=‘1‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x02‘ function=‘0x0‘/>
    </video>
    <redirdev bus=‘usb‘ type=‘spicevmc‘>
    </redirdev>
    <redirdev bus=‘usb‘ type=‘spicevmc‘>
    </redirdev>
    <memballoon model=‘virtio‘>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x07‘ function=‘0x0‘/>
    </memballoon>
  </devices>
</domain>

2、后端镜像文件

3、创建脚本

[[email protected] OMC]# cat /home/jy/kvm/cmd/clonevm.sh
#/bin/bash
#参数接收
#虚拟机器名字
DomName=$1

if [ -z $DomName ];then
  echo "please input vm name!"
  exit 9
fi

UUID=$(uuidgen)
#设置存储池位置
IMGDIR="/var/lib/libvirt/images"

# 设置后端镜像目录
IMG_BK_DIR="/var/lib/libvirt/images/bkimg"

#vmXML模板路径
VM_XMLPATH="/home/jy/kvm/cmd/xmltmpl/centos7.xml"

#vm config path
VM_XML_SYSPATH="/etc/libvirt/qemu"

#虚拟机序号存储文件目录
VM_CODEFILE="/home/jy/kvm/cmd/xmltmpl/vmcode.txt"
STARTNUM=`cat $VM_CODEFILE`
#获取当前要创建机器的编码01-09,10-19,20-29,30-39
TO_CREATE_VMNO=$[STARTNUM+1]
tmpNum=0
if [ $TO_CREATE_VMNO -lt 10 ];then
  tmpNum="0$TO_CREATE_VMNO"
else
  tmpNum="$TO_CREATE_VMNO"
fi
MAC_START_PREFIX="52:54:00:ff:$tmpNum"

#linux tmpl name
LINUX_BACK_IMG="centos7.0.qcow2"

echo "start create vm...."
echo "current vm start mac is $MAC_START_PREFIX"

#检查是否存在
if [ -f "$IMGDIR/$DomName.qcow2" ];then
  echo "please check vm name,probably already exist!"
  exit 1
fi

cp $VM_XMLPATH  /mnt/tmplvm.xml
sed -i "s#<name>.*</name>#<name>$DomName</name>#" /mnt/tmplvm.xml
sed -i "s#<uuid>.*</uuid>#<uuid>$UUID</uuid>#" /mnt/tmplvm.xml

IMGNAME="\/var\/lib\/libvirt\/images\/$DomName.qcow2"
sed -i "s/<source file=‘.*\.qcow2‘\/>/<source file=‘$IMGNAME‘ \/>/" /mnt/tmplvm.xml
sed -i "s/<mac address=‘\(.\{2\}\):\(.*\):\(.*\):\(.*\):\(.\{2\}\):\(.*\)‘\/>/<mac address=‘$MAC_START_PREFIX:\6‘\/>/" /mnt/tmplvm.xml

#创建前端镜像,以后备os7为模版
qemu-img create  -f qcow2 -b $IMG_BK_DIR/$LINUX_BACK_IMG $IMGDIR/$DomName.qcow2 25G &>/dev/null
sleep 3

cp /mnt/tmplvm.xml $VM_XML_SYSPATH/$DomName.xml
virsh define $VM_XML_SYSPATH/$DomName.xml

echo $TO_CREATE_VMNO > $VM_CODEFILE
echo "create vm success!"
virt-manager

#复制模版XML,修改名称,UUID,网卡MAC(机器编码xx:xx:xx:xx:01(第一台机器,02第二台机器):xx)

原文地址:https://www.cnblogs.com/justart/p/11520335.html

时间: 2024-12-19 13:05:01

创建虚拟机自动化脚本的相关文章

shell 脚本创建虚拟机 并配置网卡ip地址(两个脚本)

#######################脚本1:创建虚拟机kvm##########################!/bin/bashqcow2_dir=/var/lib/libvirt/imagesread -p "请输入虚拟机号码:" num #主机号if [ $num -lt 9 ];thennum=0$num ##主机号fiif [ -z "$num" ];thenecho "错误输出"exit 1fikvm_name=host$

我的第一个自动化脚本(python)----百度搜索

这是一个纯小白胡说八道的个人总结,如果有人看到什么不对的,欢迎批评指正 博客园开通了很久,一直不知道该怎么去写,总觉得自己要写的东西都是别人已经写过的,我再去写就是在重复之前人所说,今天去面试和面试姐姐聊到这个问题的时候,我才真正的意识到写博客的意义,其实博客只要是写出来对自己有帮助,管其他人怎么看呢,就算百度搜索出来好多一样的那又怎么样呢,博客是写给自己的,如果能因此帮助别人少走一些弯路又何乐而不为呢 接下来就来我实现这个自动化脚本经历的过程,首先要在火狐浏览器安装selenium IDE:其

PowerShell创建虚拟机 (二、实现批量创建)

上一篇,我们大概了解到了如何用PowerShell脚本(以下简称PS或PS脚本)创建一台虚拟机,以及自定义虚拟机相关的配置,这一篇,我们一起探讨一下如何实现批量创建虚拟机. 批量创建,顾名思义,就是让脚本运行一次,创建多台虚拟机,最简单的实现方法呢,就是循环,下面我们一起来看一段代码: for($i=1;$i -le10;$i++) { $i } 这是PS脚本中最简单的循环之一,运行之后,效果如下图: 这个PS脚本的意思呢,是从1循环到10,一共10次,每次干的事情呢,就是将变量$i的结果输出到

在centos6.7上安装kvm,批量创建虚拟机

实验环境:dell r710 linux系统使用centos6.7 内存32G,硬盘800G 服务器主机:172.18.204.1 kickstart文件主机:172.18.11.115 ]# modprobe kvm ]# lsmod |grep kvm 显示如下即可继续: 验证:如下文件存在即可 ]# ls /dev/kvm 关闭selinux: ]# vim /etc/sysconfig/selinux selinux=dsabled ]# service NetworkManager s

OPENSTACK在RHEL7安装;admin创建虚拟机模板供demo使用

首先RHEL7安装,导入镜像,选择第一个安装7.0,接着出现下面的界面,我这安装截图来自虚拟机,真正做实验是在物理机,一般需要内存5个G 选择英文 时间选择上海,software selection选择Server UI(加上图形化界面),设置installation destination最后点击begin installation 重新配置分区 点done,一步步继续,下面截图,来自别人提供,我当时忘记截图了 左边添加root密码,右边创建用户 把勾选的enable取消掉 不注册 OK,等待

openstack创建虚拟机

使用devstack安装部署openstack之后,通常我们应该使用vmware的快照功能拍摄快照,以便以后我们可以恢复到之前的情况.创建虚拟机是openstack典型的工作流程,下面将给出创建虚拟机的详细步骤: 1.由于openstack的各种服务都需要经过授权才能够使用,而在授权过程中会使用到OS_PROJECT_NAME,OS_USERNAME和ADMIN_PASSWORD三个openstack环境变量,devstack为我们提供了设置这三个变量的openrc脚本,因此只需devstack

python2.7自动创建虚拟机

python2.7自动创建虚拟机,单台.多台(IP为虚拟机名) [1].[代码] [Python]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

【转】jenkins上配置robotframeworkride自动化脚本任务

jenkins上配置robotframeworkride自动化脚本任务 编写好的自动化脚本,集成在jenkins上进行自动运行于监控,这里采用分布式构建,在一台slave上进行任务构建与自动化脚本的运行. 步骤: 1.创建jenkins任务 选择创建一个自由风格的任务 2.选择执行自动化脚本的slave机.(slave节点的配置参考) 图1 图2 etl-Suite.txt是自动化脚本 图3 Hi All, </br> <font color="#0B610B" si

Windows Azure系列公开课 - 第三课:创建虚拟机 (基础篇)

Windows Azure微软智能云平台主要提供四大类服务:计算服务(Compute),数据服务 (Data Services) ,应用服务 (App Services) ,网络服务(Network).在这一课中我们会为大家着重介绍计算服务中的虚拟机 (Virtual Machines). 云计算模型和选择 在之前的课程中,我们已经向大家介绍过,Windows Azure主要提供三大类云计算服务:基础结构即服务(IaaS),平台即服务(PaaS),软件即服务(SaaS). 接下来需要对映像进行配