当前位置: 首页 > 编程日记 > 正文

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=$2if [ $# -ne 2 ]
thenecho "sh $0 ip hostname"
fiset_ip(){sed -ri "/IPADDR/s#(.*.)\..*#\1.${ip}#" /etc/sysconfig/network-scripts/ifcfg-eth0sed -ri "/IPADDR/s#(.*.)\..*#\1.${ip}#" /etc/sysconfig/network-scripts/ifcfg-eth1echo "=============================================="echo "now you can running : service network restart"service network restart
}set_hostname(){sed -i "s#.*#${hostname}#" /etc/hostnamehostnamectl set-hostname ${hostname}echo "=============================================="echo "hostname is : $(cat /etc/hostname)"echo "=============================================="
}main(){set_ipset_hostname
}main
[root@localhost ~]# chmod +x /root/first.sh 

关机创建快照

2 目录规划

  1. 模板虚拟机所在目录

2.1 模板机所在目录

E:\VMS\Centos7\template

3 vmrun结合脚本批量创建虚拟机

  1. vmrun.exe 程序
  2. git 软件
  3. 编写脚本
  4. 设置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.0PATH_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) doecho "开始创建链接克隆: ${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) doecho "开始启动: ${SERVER_NAME}-${i}"/E/SOFT/VM/vmrun.exe -T ws start ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmxsleep 10done
}# 批量修改IP地址
VM_set_IP(){>  ${PATH_VMS}\\set_ip.batfor i in $(cat host-list.txt) doecho "${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.batecho "ping -n 5 127.0.0.1 >nul" >> ${PATH_VMS}\\set_ip.batdoneecho "修改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) doecho "开始关闭: ${SERVER_NAME}-${i}"/E/SOFT/VM/vmrun.exe -T ws stop ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmxsleep 2 done
}# 关机后批量创建快照
VM_snapshot(){for i in $(cat host-list.txt) doecho "开始快照: ${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) doecho "获取快照列表: ${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) doecho "开始恢复快照: ${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) doecho "开始删除快照: ${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和主机名

  1. 创建虚拟机

  1. 开启所创建的虚拟机

ok 都启动了

  1. 设置所创建虚拟机的ip 和 主机名

    1. 查看是否修改成功了 
      FAST-80 ,OK

FAST-81,OK

FAST-82,OK

注: 只是为了方便做实验用,方便自己快速搭建环境练习测试

转载于:https://www.cnblogs.com/keme/p/10025549.html

相关文章:

暗时间:开发效率为何如此低下

产品 开发 测试 三者都理解不一致。 产品怎么样表达出自己的诉求,是否写清文档就够了。 开发觉得自己沟通了,但是为什么测试一提测又许多问题。 测试的case看似都一起评审了。 而这样的结果必然是重新修修补补,怎么样事前把问题全部解…

【Python】Scrapy爬虫实战(传智播客老师简介)

在文件夹里创建一个爬虫项目 scrapy startproject ITcast 在spiders目录下: scrapy genspider itcast ------------------------------------------------------------------------------------------------------------------------------------------------------…

坑系列 --- 高可用架构的银弹

呵呵,题图是一队困在坑中的鸭子:)作为一个搬砖的,我经常被困着。今天高考,想起15年前的今天(哦,那时候是七月高考),恩,考完了,还不错,…

【TeeChart Pro ActiveX教程】(八):ADO数据库访问(上)

2019独角兽企业重金招聘Python工程师标准>>> 下载TeeChart Pro ActiveX最新版本 介绍 将TeeChart控件连接到ADO.NET数据库可以在设计时使用TeeChart编辑器完成,并在运行时使用几行代码完成。 任何Series都可以使用TeeChart Editor连接到ADO.NET表或查询。…

代码规范碎碎念

代码规范碎碎念 list条件多于2不要写命名上 controller (model-DTO) service (model) repository层 语义化构造 (entity->model) String转map 语义化数据结构 String转model 从数据库层增强语义 组装模型 DAO ( entity) mapper VO(admin) DTO(client) -------…

RRDTool原理简介

1.概述 RRDtool 代表 “Round Robin Database tool” ,作者同时也是 MRTG 软件的发明人。官方站点位于http://oss.oetiker.ch/rrdtool/ 。 所谓的“Round Robin” 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最…

【Python】Scrapy爬虫实战(腾讯社会招聘职位检索)

爬虫网页:https://hr.tencent.com/position.php 应用Scrapy框架,具体步骤就不详细说明,前面几篇Scrapy有一定的介绍 因为要涉及到翻页,下面的代码使用拼接的方式获取url,应用在一些没办法提取下一页链接的情况下 直…

一对一直播app源码功能操详解方案分享

一:登录页面:1.快捷登录:可以利用第三方账号进行快捷登录2.手机登录:可以让用户通过输入手机号码和密码进行登录.3.注册:可以使用手机号获取验证码注册账号二:打开一对一直播APP首页打开APP,会显…

从一个需求看问题的无限复杂化和简单化

一个需求 如果你一开始的出发点就错了,那么后续的设计只会非常复杂,而且还会有漏洞,也很难发现,发现了也很难解决。 先看数据结构: A表 主键id 其他各种字段不重要 ,重要的就一个字段sort字段 aid1 …

使用自定义材质球,实现NGUI屏幕溶解和灰显

UITexture实现的溶解: 重设UITeture的材质球实现上述效果,把当前屏幕渲染的Texture2D丢给UITexture,即可实现UI屏幕特效,背景模糊等都可以。 难点主要是实时刷新问题 解决的比较粗暴,每次Update重设材质球,…

【Python】Tkinter 体验

import tkinter as tk root tk.Tk() root.title("work hard") #添加一个Label组件,Label组件是GUI程序中最常用的组件之一 #Label组件可以显示文本,图标或图片 #在这里我们让它显示指定文本 theLabel tk.Label(root,text"努力努力再努力…

debian手动安装java两种方法

2019独角兽企业重金招聘Python工程师标准>>> 方法一:下载后修改~/.bashrc文件 方法二:使用update-alternatives进行命令安装 相关配置记录 法一: 官网下载压缩包,解压,然后复制到/usr/lib/jvm目录下&#x…

【Python】Label组件 Button组件 Checkbutton组件

Label组件 Label组件是用于在界面上输出描述的标签。 #导入tkinter模块所有内容 from tkinter import *#创建一个主窗口,可以容纳整个GUI程序 root Tk() root.title("hhh")textLabel Label(root,text"努力努力再努力!\n努力努力再努力…

大厂线上案例复盘--代码漏洞

万无一失却实际上是形同虚设的代码逻辑漏洞 这是一则发生在某大厂的真实案例,出于脱敏名字这且不说。 这个系统因为第一次上线,流量非常的大。 所以需要灰度上线,所谓灰度方案很短,比如按照地理位置,先选择某个访问量…

使用Vue+Spring Boot实现Excel上传

写在最前 在上期教程中我们介绍了读写Excel与使用Selenium的入门方法,本期将介绍通过VueSpring Boot实现在WebApp中上传Excel导入测试脚本的功能。使用前后端分离的技术是因为这样便于后续功能的迭代,在本文中我们只涉及一个简单的前端界面及一个简单的后…

国信优易首席科学家周涛:大数据的商业应用

国信优易首席科学家周涛认为,大数据已经成为一个非常热的概念,但是当一个概念热到一定程度就会存在风险,甚至风险比机会还多。在大数据沙龙中,他和数据从业者们分享了自己所经历的大数据应用。 以下为周涛发言: 大数据…

【Python】Radiobutton组件 LabelFrame组件 Entry组件

Radiobutton组件 Radiobutton组件跟Checkbutton组件的用法基本一致,唯一不同的是Radiobutton实现的是“单选”的效果。 要实现这种互斥的效果,同组内的所有Radiobutton只能共享一个variable选项,并且需要设置不同的value选项值。 注释掉的也…

索引与联合索引使用注意

索引和联合索引看似很简单但是往往不一定用的对。 假设数据库2个字段a,b都是查询条件 第一个问题:是建立2个索引还是一个联合索引? 第二个问题:如果建立联合索引那么字段的顺序有什么讲究? 原则: 1.如果需要多个字…

用canvas实现一个vue弹幕组件

看B站时,对弹幕的实现产生了兴趣,一开始想到用css3动画去实现,后来感觉这样性能不是很好,查了下资料,发现可以用canvas实现,于是就摸索着写了一个简单的弹幕。弹幕功能支持动态添加弹幕弹幕不重叠自定义弹幕…

系统架构的过程 浮现式设计

系统架构如果设计之初就设计错了,那么必然是南辕北辙。 很多人做系统设计总是东一下,西一下,杂乱无章,想到那是那,然后系统的边界很大,总会有疏漏。 那么系统架构应该怎么设计呢? 首先来说分…

【Python】Listbox组件 Scrollbar组件 Scale组件

Listbox组件 在选项特别多的时候,Listbox是以列表的形式显示出来,并支持滚动条操作,所以在对于需要提供大量选项的情况下会更适用。 from tkinter import * root Tk() theLB Listbox(root,setgridTrue) theLB.pack() for item in ["…

Hive 按某列的部分排序 以及 删列操作

Hive 按某列的部分排序 以及 删列操作 脑袋果然还是智商不足。 涉及到的小需求: 某个表test 有一列 tc: a字符串b字符串c字符串 拼接组成把test表,按b字符串排序 输出遇到的问题: select 里面必须包含 order by 的列按b字符串排序…

docker 安装 RabbitMQ

1、镜像中国(http://www.docker-cn.com/registry-mirror):直接使用https://hub.docker.com下载镜像比较慢,使用镜像中国加速 使用例子:$ docker pull registry.docker-cn.com/library/rabbitmq:3.6-management 2、拉取…

编程容易犯的错

1.数字 比如分页默认从第0页开始,你不了解,写个1,这样数据也出来,但是就是少了第一条,这种错误比较难发现。 写代码对于数字需要敏感,不懂一定要搞懂。 2.参数 多参数做缓存拼凑一个key,之前…

深圳杯---无线回传拓扑规划

B题-无线回传拓扑规划(3人完成) 背景介绍 在城区建设基站,传输光纤部署最后一公里的成本高,光纤到站率低,全球综合来看低于60%;如果使用微波传输,由于微波只能在LOS(视距&#xff0…

Jmeter脚本 GUI和非GUI启动方式

2019独角兽企业重金招聘Python工程师标准>>> 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat 3.添加线程组 在TestPlan节点上右键,Add-->Threads(U…

前端效果参考地址

今天项目内容基本完善,没什么事情,就找了一些插件和好用的css动画,下面将一些链接地址分享出来 1、如果需要写阴影、圆角、渐变、弹性盒子等,请参考一下方式: 点击 2、轮播图、全屏滚动等动画: swiper效果 …

随机变量的数字特征(数学期望,方差,协方差与相关系数)

戳这里:概率论思维导图 !!! 数学期望 离散型随机变量的数学期望 (这里要求级数绝对收敛,若不绝对收敛,则E(X)不存在) 如果有绝对收敛,则有 ,其中 连续型…

Spring @bean冲突解决方案

引用2个jar都实现了相同的bean注入,这个是feign的Level Bean public Level feignLoggerLevel() {return Level.FULL; } 这样报错: escription:xxx required a single bean, but 2 were found:- feignLoggerLevel: defined by method feignLoggerLevel in class p…

javascript中实例方法与类方法的区别

在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问…