vmrun 批量建立vmware虛擬機器
阿新 • • 發佈:2018-11-27
1 準備模板機
具體步驟如下:
1. 下載映象安裝系統
https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/
2. 安裝完成配置好IP ,關閉SELINUX ,關閉firewalld ,修改網絡卡名
3. 預設定好修改其他機器IP指令碼
1.1 安裝系統
略
1.2 模板機的設定
修改網絡卡名eth0
# 當前系統版本 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # 修改網絡卡配置檔案為eth0 [[email protected] ~]# cd /etc/sysconfig/network-scripts [[email protected] network-scripts]# mv ifcfg-enxxxx eth0 # 修改為靜態ip [[email protected] 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 [[email protected] ~]# 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配置並更新核心引數 [[email protected] ~]# 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
[[email protected] ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux [[email protected] ~]# egrep -v "^#|^$" /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targeted
關閉firewalld
[[email protected] ~]# systemctl disable firewalld.service
重啟系統
[[email protected] ~]# reboot
然後給批量建立虛擬機器設定自定義的IP和主機名的指令碼
[[email protected] ~]# 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 [[email protected] ~]# 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
注: 只是為了方便做實驗用,方便自己快速搭建環境練習測試