vmrun 批量创建vmware虚拟机
1 准备模板机
具体步骤如下:
1. 下载镜像安装系统
https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/
2. 安装完成配置好IP ,关闭SELINUX ,关闭firewalld ,修改网卡名
3. 预设置好修改其他机器IP脚本
1.1 安装系统
略
1.2 模板机的设置
修改网卡名eth0
# 当前系统版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) # 修改网卡配置文件为eth0
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# mv ifcfg-enxxxx eth0 # 修改为静态ip
[root@localhost network-scripts]# cat ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=10.0.0.79
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=10.0.0.2 # 禁用该可预测命名规则
# 在 grup 文件里面的 GRUB_CMDLINE_LINUX 变量添加 net.ifnames=0 biosdevname=0
[root@localhost ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true" #运行命令重新生成GRUB配置并更新内核参数
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-692c580a413f41d8b51ddc4724500560
Found initrd image: /boot/initramfs-0-rescue-692c580a413f41d8b51ddc4724500560.img
done
关闭selinux
[root@localhost ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
[root@localhost ~]# egrep -v "^#|^$" /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
关闭firewalld
[root@localhost ~]# systemctl disable firewalld.service
重启系统
[root@localhost ~]# reboot
然后给批量创建虚拟机设置自定义的IP和主机名的脚本
[root@localhost ~]# cat /root/first.sh
#!/bin/bash
#Author:keme
#Blog:https://www.cnblogs.com/keme
#Time:2018-11-23
#Name:first.sh
#Version:V1.0
#Description:This is a test script. ip=$1
hostname=$2 if [ $# -ne 2 ]
then
echo "sh $0 ip hostname"
fi set_ip(){
sed -ri "/IPADDR/s#(.*.)\..*#\1.${ip}#" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -ri "/IPADDR/s#(.*.)\..*#\1.${ip}#" /etc/sysconfig/network-scripts/ifcfg-eth1 echo "=============================================="
echo "now you can running : service network restart"
service network restart
} set_hostname(){
sed -i "s#.*#${hostname}#" /etc/hostname
hostnamectl set-hostname ${hostname}
echo "=============================================="
echo "hostname is : $(cat /etc/hostname)"
echo "=============================================="
} main(){
set_ip
set_hostname
} main
[root@localhost ~]# chmod +x /root/first.sh
关机创建快照
2 目录规划
- 模板虚拟机所在目录
2.1 模板机所在目录
E:\VMS\Centos7\template
3 vmrun结合脚本批量创建虚拟机
- vmrun.exe 程序
- git 软件
- 编写脚本
- 设置IP 的脚本
3.1 vmrun.exe
找到vmrun.exe 程序
创建一个E:\SOFT\VM文件夹复制到新创建的文件夹
vmrun使用
https://www.cnblogs.com/qiaoyanlin/p/6883487.html
https://www.vmware.com/pdf/vix162_vmrun_command.pdf
3.2 git 软件作用
方便使用linux 的shell 命令
3.3 编写脚本
auto_VM.sh
内容如下
#!/bin/bash
#Author:keme
#Blog:https://www.cnblogs.com/keme/
#Time:2018-11-23
#Name:auto_vm.sh
#Version:V1.0 PATH_TEM="/E/VMS/Centos7/template/template.vmx"
PATH_SERVICE="/E/VMS/Centos7"
PATH_SERVICE_CMD="E:\VMS\Centos7"
#######################################
#PATH_TEM="/E/VMS/Debian8/template/template.vmx"
#PATH_SERVICE="/E/VMS/Debian8"
#PATH_SERVICE_CMD="E:\\VMS\\Debian8"
######################################
PATH_VMRUN_CMD="E:\\SOFT\\VM"
PATH_VMS="E:\\VMS"
SERVER_NAME="FDSF"
CLUSTER_NAME="FDFS-cluster"
SHOT_NAME="$2" # 创建克隆链接的虚拟机
VM_create(){
for i in $(cat host-list.txt)
do
echo "开始创建链接克隆: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws clone "${PATH_TEM}" ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx linked -snapshot=CLEAN -cloneName=${SERVER_NAME}-${i}
sleep 2
done
} # 启动创建好的虚拟机
VM_start(){
for i in $(cat host-list.txt)
do
echo "开始启动: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws start ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx
sleep 10
done
} # 批量修改IP地址
VM_set_IP(){
> ${PATH_VMS}\\set_ip.bat
for i in $(cat host-list.txt)
do
echo "${PATH_VMRUN_CMD}\\vmrun.exe -T ws -gu root -gp 123456 runProgramInGuest \"${PATH_SERVICE_CMD}\\${CLUSTER_NAME}\\${SERVER_NAME}-${i}\\${SERVER_NAME}-${i}.vmx\" /bin/bash /root/first.sh ${i} ${SERVER_NAME}-${i}" >> ${PATH_VMS}\\set_ip.bat
echo "ping -n 5 127.0.0.1 >nul" >> ${PATH_VMS}\\set_ip.bat
done
echo "修改IP脚本生成路径: ${PATH_VMS}\\set_ip.bat"
echo -e "运行命令:\n1.打开cmd.exe\n2.输入: ${PATH_VMS}\\set_ip.bat"
} # 修改好后批量关机
VM_stop(){
for i in $(cat host-list.txt)
do
echo "开始关闭: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws stop ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx
sleep 2
done
} # 关机后批量创建快照
VM_snapshot(){
for i in $(cat host-list.txt)
do
echo "开始快照: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws snapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" ${SHOT_NAME}
sleep 2
done
} # 获取快照列表
VM_shot_list(){
for i in $(cat host-list.txt)
do
echo "获取快照列表: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws listSnapshots "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx"
sleep 2
done
} # 批量恢复快照
VM_shot_back(){
for i in $(cat host-list.txt)
do
echo "开始恢复快照: ${SERVER_NAME}-${i} ${SHOT_NAME}"
/E/SOFT/VM/vmrun.exe -T ws revertToSnapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" ${SHOT_NAME}
sleep 2
done
} # 批量删除快照
VM_shot_del(){
for i in $(cat host-list.txt)
do
echo "开始删除快照: ${SERVER_NAME}-${i} ${SHOT_NAME}"
/E/SOFT/VM/vmrun.exe -T ws deleteSnapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" ${SHOT_NAME}
sleep 2
done
} # 获取当前正在运行的虚拟机
VM_list(){
echo "当前正在运行的虚拟机:"
/E/SOFT/VM/vmrun.exe -T ws list
} case $1 in
create)
VM_create
;;
start)
VM_start
;;
stop)
VM_stop
;;
shot)
VM_snapshot
;;
set_ip)
VM_set_IP
;;
shot_back)
VM_shot_back
;;
shot_del)
VM_shot_del
;;
shot_list)
VM_shot_list
;;
list)
VM_list
;; *)
echo "bash $0 {create|start|set_ip|stop|shot|shot_list|shot_back|shot_del|list}"
esac
除了 set_ip
这个函数在windows 里面需要单独拿出来放到cmd 窗口使用
host-list.txt
表示创建虚拟机的数量,80,81,82表示最后的ip地址第四位
设置IP的脚本
E:\VMS\set_ip.bat
E:\SOFT\VM\vmrun.exe -T ws -gu root -gp 123456 runProgramInGuest "E:\VMS\Centos7\FDFS-cluster\FDSF-80\FDSF-80.vmx" /bin/bash /root/first.sh 80 FDSF-80
ping -n 5 127.0.0.1 >nul
E:\SOFT\VM\vmrun.exe -T ws -gu root -gp 123456 runProgramInGuest "E:\VMS\Centos7\FDFS-cluster\FDSF-81\FDSF-81.vmx" /bin/bash /root/first.sh 81 FDSF-81
ping -n 5 127.0.0.1 >nul
E:\SOFT\VM\vmrun.exe -T ws -gu root -gp 123456 runProgramInGuest "E:\VMS\Centos7\FDFS-cluster\FDSF-82\FDSF-82.vmx" /bin/bash /root/first.sh 82 FDSF-82
ping -n 5 127.0.0.1 >nul
4 模拟演示创建,修改ip和主机名
- 创建虚拟机
- 开启所创建的虚拟机
ok 都启动了
- 设置所创建虚拟机的ip 和 主机名
- 查看是否修改成功了
FAST-80 ,OK
FAST-81,OK
FAST-82,OK
注: 只是为了方便做实验用,方便自己快速搭建环境练习测试
vmrun 批量创建vmware虚拟机的更多相关文章
- 从ghost映像.gho文件快速创建vmware虚拟机
从ghost映像.gho文件快速创建vmware虚拟机 https://www.cnblogs.com/blog2018/p/8857146.html ghost文件.gho和vmware文件都是磁盘 ...
- 如何在Windows中批量创建VMware的虚拟机
在最近的工作中,需要创建一批类似的机器.在VMware中创建了模板,然后根据自义向导部署之后,发现可以快速的完成新vm的部署.系统中的计算机名,IP地址都可以自动的完成更新.唯一的缺点是,系统自带的向 ...
- ansible创建vmware虚拟机
环境:vmware 虚拟化需求:如果业务部门一次提几十台甚至几百台虚拟机需求,一个个的手动创建肯定耗时 使用ansible vmware_guest 创建虚拟机,避免手动一台一台创建的纯手工 工作废话 ...
- 通过git-bash 批量管理VMware虚拟机
#先将vmrun .exe 加入环境变量 # 我这里是: ;C:\Program Files (x86)\VMware\VMware VIX; #cd E:/期中架构/#sh new\ 3.bash ...
- python结合pyvmomi批量关闭vmware虚拟机
#!/usr/bin/env python #参考https://github.com/vmware/pyvmomi/blob/master/sample/poweronvm.py "&qu ...
- VMWare虚拟机安装创建虚拟机的使用教程
VMWare虚拟机安装创建虚拟机的使用教程 在配置虚拟机之前需要安装它,VMWare软件的安装过程比较简单,在安装在之前应该先看下说明文档.下面以VMWare Workstation6.5虚拟机 ...
- VMware workstation批量创建虚拟机和自动化安装操作系统(一)
一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...
- VMware workstation批量创建虚拟机和自动化安装操作系统(二)
一. 简述 在上一篇<VMware workstation批量创建虚拟机和自动化安装操作系统(一)>中,主要介绍了VMware workstation自定义创建虚拟机的过程,和一些其他的有 ...
- powercli创建虚拟机步骤及批量创建脚本
https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.powercli.cmdletref.doc%2FSet-OSCust ...
随机推荐
- linux上安装rabbitMQ
本次环境搭建centos7及Erlang环境otp_src_19.3.tar.gz 和rabbitmq-server-generic-unix-3.6.14.tar.zx RabbitMQ是流行的开源 ...
- 20155326《Java程序设计》实验一实验报告
实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版) ...
- nodejs mongodb 数据库封装DB类 -转
使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关于mongoose的安装就是 npm install -g mongoose 这个DB类的数据库配置是 ...
- bootstrap代码(一)
一般在个人博客上使用的较为频繁,用于显示代码的风格.在Bootstrap主要提供了三种代码风格:1.使用<code></code>来显示单行内联代码2.使用<pre> ...
- hdu 1226 超级密码
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem D ...
- Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...
- WinForm中实现Loading加载界面
1,LoaderForm窗体中添加PictureBox,然后添加Loading图片 2,窗体内属性设置 StartPosition :CenterScreen在屏幕中心显示 TopMost:True置 ...
- 【转】C#中dynamic的正确用法
原文:http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4.0的新特性.dynamic ...
- FFmpeg的安装与使用
1.概述 FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频 ...
- Java Web(四) 一次性验证码的代码实现
其实实现代码的逻辑非常简单,真的超级超级简单. 1.在登录页面上login.jsp将验证码图片使用标签<img src="xxx">将绘制验证码图片的url给它 2.在 ...