kvm 创建虚拟机脚本(centos7)

#!/bin/bash
#创建单个虚拟机(需要电脑中存在模板虚拟机)

#获取新虚拟机名称(单个创建模式)
get_newname(){
while true
do
read -p "请输入新虚拟机名称:" newname
if [ $newname ];then
break
else
echo "************"
echo "请输入姓名!"
echo "************"
fi
done
}
get_newmemary(){
while true
do
current_free_mem=`free -h|awk ‘/^Mem/{print $4}‘|sed -r ‘s/(.*).$/\1/‘`
mem_total=`free -h|awk ‘/^Mem/{print $2}‘|sed -r ‘s/(.*).$/\1/‘`
echo "目前本机内存总大小:${mem_total} G"
echo "当前空闲内存大小为:${current_free_mem} MB"
read -p "请输入新虚拟机内存大小(单位G):" newmemary
if [ $newmemary ];then
if [[ $newmemary < $mem_total ]];then
break
else
echo "**********************************"
echo "输入的数值必须小于当前内存总大小!"
echo "**********************************"
fi
else
echo "********************"
echo "请输入新虚拟机内存!"
echo "********************"
fi
done
}
get_newcpu(){
while true
do
core=`cat /proc/cpuinfo| grep "processor"| wc -l`
echo "可用core个数:${core}"
read -p "请输入新虚拟机处理器核数:" newcpu
if [ $newcpu ];then
if [ $newcpu -le $core ];then
break
else
echo "******************************"
echo "不能超过可用个数或者输入错误!"
echo "******************************"
fi
else
echo "**************"
echo "输入不能为空!"
echo "**************"
fi
done
}
#设置虚拟机名称(自定义创建多个虚拟机)
set_group_name(){
#虚拟机个数
read -p "新虚拟机个数:" vir_num
free_vir=$vir_num
#功能分组
echo "**********************************************************************************"
echo "设置好组名之后,虚拟机将每组下的虚拟机自动用【组名01、组名01、组名03、...】的形式命名"
echo "**********************************************************************************"
read -p "需要分几种功能类型(大于1):" vir_type
if [ ${vir_type} -gt ${vir_num} ];then
echo "输入不符合规则!"
exit
fi
#设置名字,组名+数字
k=1
for((i=1;i<=${vir_type};i++))
do
read -p "第${i}组组名:" group[$i]
read -p "分配新虚拟机个数:" group_num_vir
#检测输入
free_vir=$((${free_vir}-${group_num_vir}))
if [ ${group_num_vir} -gt ${vir_num} ];then
echo "输入错误,超过自定义虚拟机个数!"
exit
elif [ ${free_vir} -lt $((${vir_type}-${i})) ];then
echo "分配不均,请重新分配!"
exit
fi
#记录组内虚拟机个数
for((j=1;j<=${group_num_vir};j++))
do
name_n="${group[$i]}${j}"
name[${k}]=${name_n}
k=$(($k+1))
done
done
echo "准备创建如下虚拟机:"
for((i=1;i<=${vir_num};i++))
do
echo ${name[${i}]}
done
}
#设置xml所需参数
set_xml_args_single(){
uuid=`uuidgen`
src_path=/mnt/lv2/centos7.0.qcow2
src_xml=/etc/libvirt/qemu/centos7.0.xml
new_path=/mnt/lv1/${newname}.qcow2
new_path_sed="\/mnt\/lv1\/${newname}.qcow2"
new_xml=/etc/libvirt/qemu/${newname}.xml
}
#设置xml所需参数(多个),例如:【set_xml_args ${name[${i}]} $new_memary $new_cpu】
set_xml_args(){
newname=$1
newmemary=$2
newcpu=$3
uuid=`uuidgen`
src_path=/mnt/lv2/centos7.0.qcow2
src_xml=/etc/libvirt/qemu/centos7.0.xml
new_path=/mnt/lv1/${newname}.qcow2
new_path_sed="\/mnt\/lv1\/${newname}.qcow2"
new_xml=/etc/libvirt/qemu/${newname}.xml
}
#复制模板、xml
copy_model_xml(){
cp $src_path $new_path
cp $src_xml $new_xml
}
#修改xml文件
modification_xml(){
sed -ri "s/(<name>).*(<\/name>)/\1${newname}\2/" $new_xml
sed -ri "s/(<uuid>).*(<\/uuid>)/\1${uuid}\2/" $new_xml
mem_kb=$((${newmemary}*1024*1024))

sed -ri "s/(<memory.*>).*(<\/memory>)/\1${mem_kb}\2/" $new_xml
sed -ri "s/(<currentMemory.*>).*(<\/currentMemory>)/\1${mem_kb}\2/" $new_xml
sed -ri "s/(<vcpu.*>).*(<\/vcpu>)/\1${newcpu}\2/" $new_xml
sed -ri "s/(<source file=‘).*(‘\/>)/\1${new_path_sed}\2/" $new_xml

mac_addr=`openssl rand -hex 3 | sed -r ‘s/..\B/&:/g‘`

sed -ri "s/(<mac address=‘..:..:..:).*(‘\/>)/\1${mac_addr}\2/" $new_xml
}
#define
define_vir_single(){
virsh define $new_xml
echo "**********"
echo "${newname}建完成!"
echo "**********"
}
#------------运行分界线------------------------------------
echo "1)single"
echo "2)group"
read -p "选择你的操作:" str
case $str in
single)
get_newname
get_newmemary
get_newcpu
set_xml_args_single
copy_model_xml
modification_xml
define_vir_single
;;
group)
set_group_name
get_newmemary
get_newcpu
for((i=1;i<=${vir_num};i++))
do
set_xml_args ${name[${i}]} $newmemary $newcpu
copy_model_xml
modification_xml
define_vir_single
done
;;
*)
exit
;;
esac

原文地址:https://blog.51cto.com/lingxudong/2363332

时间: 2024-11-03 01:19:18

kvm 创建虚拟机脚本(centos7)的相关文章

opennebula kvm 创建虚拟机错误

Thu Jul 17 10:10:07 2014 : Error executing image transfer script: Error copying localhost.localdomain:/app/opennebula/var//datastores/1/12933297f0ffeba3e55bbccabcb3153b to 127.0.0.1:/app/opennebula/datastores/0/11/disk.0 opennebula kvm 创建虚拟机错误

KVM创建虚拟机

一.复制现有img备份 1.ssh登陆宿主机 我的在 192.168.0.302.复制img 我的虚拟机img文件在 /home/images 我的img模板文件在 /home/tools/kvm/imagesTemplate/ 所以将 /home/tools/kvm/imagesTemplate/ 目录下的一个img文件复制到 /home/images 目录中3.添加新加卷 4.刷新新加卷 一.使用现有img创建虚拟机 1.点击创建虚机 2.输入名称点击下一步 3.选择现有img 4.选择cp

Virtualbox创建虚拟机for Centos7

本文源链接地址:https:www.93bok.com 1.宿主机上创建vbox的虚拟机目录.硬盘目录.iso目录 mkdir -p /vms/virtualbox/disk mkdir -p /vms/virtualbox/iso mkdir -p /vms/virtualbox/vms 2.创建虚拟机 VBoxManage createvm --name centos6 --ostype Linux_64 --register --basefolder /vms/virtualbox/vms

virsh基于KVM创建虚拟机

1. 查看cpu是否支持虚拟化和 Xen 不同,KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持 egrep 'vmx|svm' /proc/cpuinfo 2. 安装工具包  yum install qemu-kvm qemu-kvm-tools virt-manager libvirt 3. 查看kvm是否安装成功  lsmod | grep kvm   4. 关闭防火墙    setenforce 0  

命令行利用KVM创建虚拟机

一,实验环境 OS:CENTOS6.5 X86_64 二,KVM宿主环境配置 1.cat /proc/cpuinfo | egrep 'vmx|svm'  //查看是否支持虚拟技术 2.安装KVM相关 yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"    

vagrant 创建虚拟机脚本

VAGRANTFILE_API_VERSION = "2" disk_ceph01 = '.ceph01_secondDisk.vdi'disk_ceph02 = '.ceph02_secondDisk.vdi'disk_ceph03 = '.ceph03_secondDisk.vdi'disk_ceph04 = '.ceph04_secondDisk.vdi'disk_cinder = '.cinder_secondDisk.vdi' $script1 = <<SCRIP

kvm批量创建虚拟机并自动设定ip和服务器名

1. 说明 kvm比起vmware来说最没有的功能就是用模板部署虚拟机的时候可以自定义ip地址,这对于大量创建vm的场景来说你需要一台台vnc的登录改动ip,显然是很累的,最近我就遇到这种场景(大型的cloudstack和openstack架构不说) 想到了一个方法,就是用一台关了机的虚拟机作为模板,复制它的xml文件可以改mac地址,这样就可以通过mac地址的唯一性而在模板虚拟机中加入一个脚本来根据一个写好在虚拟机中的列表文件来设定相应的ip地址和服务器名.这种方法要求以下步骤 1.模板虚拟机

KVM管理虚拟机

笔记内容:KVM管理虚拟机笔记日期:2018-03-08 28.9 克隆虚拟机 28.10 快照管理 28.11 磁盘格式 28.12 磁盘扩容(raw) 28.13 磁盘扩容(qcow2) 28.14 调整cpu内存和网卡 28.15 迁移虚拟机 在上一篇中,我们介绍了如何在 CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统.本篇则是介绍在KVM里安装完虚拟机后,如何使用KVM来管理虚拟机. 克隆虚拟机 克隆虚拟机是虚拟机软件必须得有的功能,这样能省去我们安装系统及环境的时

centos7中安装kvm,并连接vnc创建虚拟机

一 环境准备 1 关闭selinux 永久关闭:cd /etc/selinux/config  修改enforcing为disabled后保存退出. 临时关闭,重启失效: setenforce 0 getenforce 显示Permissive 修改完毕 2关闭防火墙 systemctl stop firewalld systemctl disable firewalld 3关闭Network Manager sysetmctl stop Network Manager systemctl di