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主机名的方法
在安装一些系统时,需要修改hostname,比如安装Hadoop时需要修改主机名,而且主机名不能包含下划线. 实际上,主机名分三种(命令hostnamectl或hostnamectl status可查 ...
- (转)EntityFramework.Extensions
转自:http://www.symbolsource.org/Public/Metadata/NuGet/Project/EntityFramework.Extended/1.0.0.20/Relea ...
- day29(对象转xml(使用java))
通常使用xStream工具. 将集合,数组,对象转成XML. 导入两个包: xpp3_min-1.1.4c.jar xstream-1.4.4.jar 自定义一个类 package com.baidu ...
- 万物云平台数据转发 c# 控制台程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- activity之间如何传递list
可以把list的内容拼成json串再去解析
- limit
在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT [offset ...
- jenkins+maven+svn构建项目,及远程部署war包到tomcat上
要使用jenkins构建项目,当然要使用jenkins了,我使用的war版本的jenkins jenkins的官网 http://jenkins-ci.org/ 点击latest下载,但是可能因为天朝 ...
- nodeclub
nodeclub笔记:https://cnodejs.org/topic/535601a20d7d0faf140303d8 先看一下框架,把没有接触过的部分熟悉一下. 熟悉一下package.json ...
- hive 函数 current_date()
current_date() 获取当天时间 select current_date() 结果是 实际操作中,这种写法只能获取日期是今天的数据,不适合数据重跑. 更合适的写法是 ,将日期作为外部参数传 ...
- 分频器的verilog设计
笔者最近由于实验室老师的任务安排重新又看了一下分频器的verilog实现,现总结如下,待以后查看之用(重点是查看计数器计到哪个值clk_out进行状态翻转) 1.偶数分频占空比为50% 其实质还是一个 ...