一. 簡述
在上一篇《VMware workstation批量創建虛擬機和自動化安裝操作系統(一)》中,主要介紹了VMware workstation自定義創建虛擬機的過程,和一些其他的有利於管理虛擬機的配置等操作。
本篇博客主要是基於上一篇博客的基礎 ,進行88台虛擬機的批量化部署和操作系統自動化安裝。
二. 涉及知識點
- 網絡引導服務器部署(無人值守安裝)
- centos網絡配置
- vmtools的安裝和使用
- 共享文件的和虛擬機安裝目錄設置
- shell腳本語言編輯和sed用法
- DHCP綁定MAC分配IP
三. 部署過程
因為采用網絡引導安裝的方式,因此需要首先部署好網絡引導服務器。網絡引導服務器采用無人值守安裝的引導安裝方式,因此需要做一下准備。
1. 虛擬機console01安裝操作系統
基於前一篇博客,采用虛擬機通過虛擬硬件CDROM打開系統鏡像ISO文件的方式安裝操作系統,因為之配置了內存為512M,故安裝過程為精簡安裝。安裝過程略。
console01配置如下:
4vCPU(2x2),512M內存,8G系統盤,2塊以太網卡(NAT&Hostonly)
NAT:eth_mac 00:00:00:80:00:03
Hostonly:eth_mac 00:00:00:10:00:03
OS:CentOS6.5_x86_64
注:采用此種方式安裝時,實際安裝的軟件包只有200多個。很多配置都不齊全。因此需要做一些初始配置。比如vim安裝,YUM源配置等,這些就不在贅述。
a. 編輯網絡配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:00:00:80:00:03
TYPE=Ethernet
UUID=6cf3f3f4-ccf5-48a2-8ba3-db09068942f5
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.80.3
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=192.168.80.2
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:00:00:10:00:03
TYPE=Ethernet
UUID=c82f9c62-49b3-4282-9533-55e909c484d8
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.3
NETMASK=255.255.255.0
編輯完成之后,啟動網卡
ifup eth0 && ifup eth1
b. 遠程登陸
上述過程完成之后,可以通過ssh客戶端,如xshell登陸console01
2. 安裝vmtools
選擇console01,右鍵點擊,可發現有安裝vmtools選項。
當以這種方式安裝vmtools時,實際上是以光驅掛載鏡像文件的方式,將載有vmtools光驅設備,接入到虛擬機console01中,但是並沒有掛載,因此需要以下操作。
注,此時VMware workstation會有如下提示:
在客戶機中裝載虛擬CD驅動器,啟動終端,使用tar解壓安裝程序,然后執行vmware-install.pl安裝VMware Tools
a. 掛載vmtools光驅設備
mkdir -p /mnt/cdrom && mount -o loop /dev/cdrom
進入到/mnt/cdrom中,加壓到指定目錄
cd /mnt/cdrom && tar -zxvf VMwareTools-10.1.6-5214329.tar.gz -C /root
b. 執行安裝vmtools的腳本
進入到/root/vmware-tools-distrib中,執行安裝腳本(-d選項免交互默認安裝)
./vmware-install.pl -d
提示結束后,基本完成了vmware tools的安裝。
注:
vmtools能夠帶來很多好處。
其一就是虛擬機可以全屏顯示;
其二就是能夠進行宿主PC和虛擬機之間的粘貼復制或者拖曳復制;
其三就是設置時間同步,使得虛擬機的時間和宿主機同步;
其四就是文件共享,這一點十分好用。
通過菜單的首選項,設置共享目錄,則共享目錄掛載在/mnt/hgfs目錄下,VMware workstation可以設置多個共享目錄。
共享目錄的權限,在虛擬機CentOS6.5的系統中,顯示為777(可讀可寫可執行模式),因此在此共享目錄中的文件,能夠被讀取編輯和執行。
之所以說共享目錄用處很大,不僅僅在於它能夠在Linux中看到和使用windows的文件,同時可以作為一種全局文件系統的存在,即不添加其他數據磁盤,直接使用/mng/hgfs目錄下的共享目錄,來使用windows的文件系統,進行數據的存儲,如網站數據,軟件安裝目錄等,控制台的維護腳本等。這樣做的好處是,即便虛擬機不存在了,但是那些數據依然存在,並且可使用性極高。具備了數據的冷備性質,保證了數據的安全性。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※ 寫到此,大多讀者應該能夠猜到我是如何來批量創建虛擬機和安裝操作系統的了 ※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
沒錯,是這樣:
通過虛擬機的shell腳本,來創建多個虛擬機目錄,同時以拷貝和修改虛擬機配置文件,使得每個虛擬機具有固定的MAC地址。
在無人值守引導安裝的部署過程中,配置DHCP通過MAC分配IP的方式,進行所有虛擬機的IP設定。
基本上是這個思路了,方向很明顯,技術實現不是很難,只是比較費時間,在費時過程中學習和實踐。
3. 創建軟RAID1
這里通過RAID1存儲系統鏡像,一方面是提供數據的讀取速度,一方面是認識和使用RAID
a. 添加兩塊10G數據盤,創建RAID1
- 檢查系統是否安裝有mdadm軟件包 :
rpm -qa|grep mdadm
- 安裝mdadm軟件:
yum -y install mdadm
- 不重啟掃描SCSI總線獲取添加的磁盤:
echo "- - -" > /sys/class/scsi_host/host0/scan
- 查看磁盤並格式化
fdisk -l|grep dev
- 創建RAID1設備/dev/md1
mdadm -C /dev/md1 -l raid1 -n /dev/sdb /dev/sdc
mdam -D -s > /etc/mdadm.conf
b. 格式化掛載RAID1設備
- 格式化/dev/md1
mkfs.ext4 /dev/md1
- 編輯/etc/fstab內容
# /etc/fstab # Created by anaconda on Sat Jul 22 13:34:53 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=3172fd83-981b-49ce-b0ca-96a8288d1ffc /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/md1 /var/www/html ext4 rw,quota,acl 0 0
執行mount -a ,然后df -h看一下是否正確掛載
至此,其實完成了第一步,即以RAID1設備/dev/md1作為存儲CentOS6.5鏡像文件的位置。
將/dev/md1掛載在Http默認的網站根目錄,只需要我們部署鏡像網站即可。
因為是多版本安裝,因此我們需要區分不同的網絡鏡像,這里以目錄的形式區分,即創建目錄
mkdir -p /var/www/html/centos6.5
4. 部署HTTP服務
HTTP服務,是網絡引導時,從改HTTP服務器上加載完整的系統鏡像站點。這里采用的時HTTP服務,當然也可以采用FTP,或NFS協議
a. 安裝httpd
yum -y install httpd
b. 配置httpd服務
- 修改:ServerName=192.168.80.3
- 取消注釋:NameVirtualHost *:80
- 添加以下內容
<VirtualHost *:80> ServerAdmin yunweintoe@163.com DocumentRoot /var/www/html ServerName www.osimage.com ErrorLog logs/www.osimage.com-error_log CustomLog logs/www.osimage.com-access_log common </VirtualHost>
c. 啟動HTTP服務
service httpd start && chkconfig httpd on
d. 創建CentOS6.5系統鏡像站
通過console01的CDROM加載CentOS6.5的ISO文件后,可在系統里掛載
mount -o loop /dev/cdrom /mnt/cdrom
或者在/mnt/hgfs中直接掛載
mount -o loop /mnt/hgfs/share/osimage/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/cdrom/
測試可以通過瀏覽器輸入:http://192.168.80.3/centos6.5/RELEASE-NOTES-en-US.html 來看是否能夠訪問站點
5. 部署TFTP服務
TFTP主要提供在CentOS6.5從網絡引導時,提供壓縮內核vmlinuz和文件系統鏡像文件initrd.img,TFTP的根目錄在/var/lib/tftpboot
因此 ,當存在多個版本操作系統壓縮內核和文件系統鏡像時,則需要和完全鏡像站點一樣,通過創建目錄的方式,把不同版本的對應文件放置其中
a. 安裝TFTP
這里以xinetd的方式來運行tftp,而非守護進程的方式
yum -y install xinetd tftp-server
b. 編輯xinetd配置
vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
c. 啟動tftp服務
chkconfig xinetd on && service xinetd start
d. 拷貝壓縮內核和文件系統鏡像
mkdir -p /var/lib/tftpboot/centos6.5
cp /var/www/html/centos6.5/isolinux{initrd.img,vmlinuz} /var/lib/tftpboot/centos6.5/
e. 創建pxelinux.cfg 目錄
pxelinuc.cfg內部存放的是網絡引導啟動時的配置文件和展示列表。
pxelinux.0則是如同mbr一樣的網絡引導程序,會從pxelinux.cfg的配置中獲取引導配置參數和列表,從而引導不同的操作系統
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
假如系統沒有/usr/share/syslinux/pxelinux.0文件,則需要通過以下命令來安裝
yum -y install syslinux
f. 編輯pexlinux.cfg/default和list.txt文件
default文件用來指定引導默認時間,需要加載的內核參數,內核鏡像位置等,list.txt表示引導前展示的內容
編輯/var/lib/tftpboot/pxelinux.cfg/default:
#設置默認安裝系統
default 1
prompt 1
#設置默認超時6秒
timeout 60
#要顯示的信息
display pxelinux.cfg/list.txt
#內核參數等
label 1
kernel /centos6.5/vmlinuz
#ksdevice尋找鏡像的設備
#http
append ksdevice=eth0 ks=http://192.168.80.3/centos6.5/ks.cfg initrd=/centos6.5/initrd.img
#nfs
#append ksdevice=eth0 ks=nfs://192.168.80.3/centos6.5/ks.cfg initrd=/centos6.5/initrd.img
#ftp
#append ksdevice=eth0 ks=ftp://var/lib/tftpboot/centos6.5/ks.cfg initrd=/centos6.5/initrd.img
label 2
kernel /centos7.2/vmlinuz
#http
append ksdevice=eth0 ks=http://192.168.80.3/centos7.2/ks.cfg initrd=/centos7.2/initrd.img
注:
http,nfs,ftp都可以用來存放完整系統鏡像。
kernel /centos6.5/vmlinuz指定的時壓縮內核的位置,實際路徑是從/var/lib/tftpboot/centos6.5/vmlinuz;initrd=/centos6.5/initrd.img 實際位置是/var/lib/tftpboot/centos6.5/initrd.img。
append指定引導內核時的參數,ksdevice=eth0指定從虛擬機的eth0網卡尋找站點,ks指定安裝系統中的配置文件位置,這里采用http協議,說明ks.cfg文件放置在和完整鏡像同一個位置
編輯/var/lib/tftpboot/pxelinux.cfg/list.txt:
#**********************************#
# choise which os you want install
# (1) centos6.5 (default)
# (2) centos7.2
#**********************************#
6.創建和編輯kf.cfg文件
自動化安裝操作系統的一個重要環節則是ks.cfg文件,這個文件記錄了交互安裝過程中各個部分的值。
ks.cfg的文件生成有三種方式:
1.通過安裝和啟動來生成system-config-kickstart來生成。這種方式需要在centos6.5系統中安裝和啟動system-config-kickstart,通過kickstart來創建ks.cfg文件,並保存到/var/www/html/centos6.5/目錄下。
2.通過VMware workstation安裝虛擬機來生成。事實上,當安裝操作系統之后,都會在/root目錄下生成anaconda-ks.cfg文件,這個同樣也是ks.cfg的文件。使用VMware workstation創建虛擬機時,生成的該文件,需要做一定的修改,才能夠應用在網絡引導安裝的過程中。
3.手動編輯ks.cfg文件。這個是比較專業的人士的選擇。
本篇博客就是使用了第一種方式。或者根據第一種ks.cfg文件,來修改第二種方式生成的ks.cfg文件。
ks.cfg文件的內容主要是安裝過程中的參數,通過文件的形式直接指定給安裝程序。其實還可以編寫一些簡單的腳本,使得在虛擬機安裝完成之后,執行這些腳本。我的ks.cfg內容如下:
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.80.3/centos6.5/"
# Root password
#rootpw --iscrypted $1$pOt10Fdi$4zP5vQOnGj1qPp.0/olif.
rootpw --iscrypted $6$ZspR1hpO4tq5c0dh$xLhgGsVtFkCFh9oB6xgXwIfMga5MXYvf7JHAnfkBwPC29yhk7UY9uPWBTR0aGQCbD6j2uegZTJL7myluYl1we/
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
network --bootproto=dhcp --device=eth1 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=256
part swap --fstype="swap" --size=500
part / --fstype="ext4" --grow --size=1
%packages
@base
@compat-libraries
@network-tools
@performance
device-mapper-persistent-data
ncurses-term
python-dmidecode
star
yum-plugin-verify
zsh
-cpuspeed
%post
#修改IP為靜態IP
sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-eth1
#獲取IP
ETH0IP=$(ifconfig eth0|grep "192"|awk '{print $2}'|awk -F : '{print $2}')
ETH1IP=$(ifconfig eth1|grep "192"|awk '{print $2}'|awk -F : '{print $2}')
#eth0 寫入固定IP地址,網關,DNS1
echo "IPADDR=${ETH0IP}" >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo "NETMASK=255.255.255.0" >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo "GATEWAY=192.168.80.2" >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo "DNS1=192.168.80.2" >> /etc/sysconfig/network-scripts/ifcfg-eth0
#eth1 寫入固定IP地址,網關,DNS1
echo "IPADDR=${ETH1IP}" >> /etc/sysconfig/network-scripts/ifcfg-eth1
echo "NETMASK=255.255.255.0" >> /etc/sysconfig/network-scripts/ifcfg-eth1
#關閉IPV6
echo "NETWORKING_IPV6=no" >> /etc/sysconfig/network
echo "alias net-pf-10 off" >> /etc/modprobe.d/ipv6off.conf
echo "options ipv6 disable=1" >> /etc/modprobe.d/ipv6off.conf
%end
7. 部署DHCP服務器
無人值守自動化安裝,希望裸機在啟動時,能夠根據自己的MAC從DHCP獲取IP,然后通過IP地址和TFTP通信,獲取vmlinuz和initrtd.img文件,加壓內核之后,和HTTP的鏡像站點通信,獲取完整的系統鏡像。因此DHCP在此過程中充當着重要的角色。
這里采用綁定MAC分配IP的方式,實際上是想要固定的MAC的虛擬機具有固定的IP,對以后的管理和實踐環境有很高的辨識度。其實實際工作中,需要手動獲取集群節點的MAC地址。本篇博客只適合實踐環節的場景,主要是掌握這門技術。
a. 安裝DHCP服務器
yum -y install dhcp
b. 創建主機的信息列表
這個主機信息列表值得是,希望創建的節點名稱,192.168.80.0/24網段的MAC和IP,192.168.10.0/24的網段和IP。因為要從node11-node99,因此采用shell環節的for循環來生成這個信息列表
for num in $(seq 11 99)
do
echo "node${num} 00:00:00:80:00:${num} 192.168.80.${num} 00:00:00:10:00:${num} 192.168.10.${num}" >> nodes_info.txt
done
查看生成的nodes_info.txt內容如下(部分):
node11 00:00:00:80:00:11 192.168.80.11 00:00:00:10:00:11 192.168.10.11
node12 00:00:00:80:00:12 192.168.80.12 00:00:00:10:00:12 192.168.10.12
node13 00:00:00:80:00:13 192.168.80.13 00:00:00:10:00:13 192.168.10.13
node14 00:00:00:80:00:14 192.168.80.14 00:00:00:10:00:14 192.168.10.14
node15 00:00:00:80:00:15 192.168.80.15 00:00:00:10:00:15 192.168.10.15
node16 00:00:00:80:00:16 192.168.80.16 00:00:00:10:00:16 192.168.10.16
.........
node91 00:00:00:80:00:91 192.168.80.91 00:00:00:10:00:91 192.168.10.91
node92 00:00:00:80:00:92 192.168.80.92 00:00:00:10:00:92 192.168.10.92
node93 00:00:00:80:00:93 192.168.80.93 00:00:00:10:00:93 192.168.10.93
node94 00:00:00:80:00:94 192.168.80.94 00:00:00:10:00:94 192.168.10.94
node95 00:00:00:80:00:95 192.168.80.95 00:00:00:10:00:95 192.168.10.95
node96 00:00:00:80:00:96 192.168.80.96 00:00:00:10:00:96 192.168.10.96
node97 00:00:00:80:00:97 192.168.80.97 00:00:00:10:00:97 192.168.10.97
node98 00:00:00:80:00:98 192.168.80.98 00:00:00:10:00:98 192.168.10.98
node99 00:00:00:80:00:99 192.168.80.99 00:00:00:10:00:99 192.168.10.99
c. 編輯生成配置文件的腳本
本篇博客命令的生成配置文件的腳本為make_dhcpd.sh
這個腳本的作用,就是讀取上面生成的nodes_info,然后生成dhcpd.conf配置中,綁定MAC和IP的配置部分,這里是虛擬機的兩塊網卡都綁定
#!/bin/bash
CONFIGLIST=$1
DHCPCONFIG="/etc/dhcp/dhcpd.conf"
while read HOST_NAME ETH0MAC HOSTIP0 ETH1MAC HOSTIP1
do
cat >> ${DHCPCONFIG} << EOF
host ${HOST_NAME}-eth0 {
hardware ethernet ${ETH0MAC};
fixed-address ${HOSTIP0};
}
host ${HOST_NAME}-eth1 {
hardware ethernet ${ETH1MAC};
fixed-address ${HOSTIP1};
}
EOF
done < ${CONFIGLIST}
執行這個腳本,生成dhpcd.conf有關綁定MAC和IP的部分
./make_dhcpd.sh nodes_info
腳本執行后,可以查看生成的配置文件,部分如下:
host node97-eth0 {
hardware ethernet 00:00:00:80:00:97;
fixed-address 192.168.80.97;
}
host node97-eth1 {
hardware ethernet 00:00:00:10:00:97;
fixed-address 192.168.10.97;
}
host node98-eth0 {
hardware ethernet 00:00:00:80:00:98;
fixed-address 192.168.80.98;
}
host node98-eth1 {
hardware ethernet 00:00:00:10:00:98;
fixed-address 192.168.10.98;
}
host node99-eth0 {
hardware ethernet 00:00:00:80:00:99;
fixed-address 192.168.80.99;
}
host node99-eth1 {
hardware ethernet 00:00:00:10:00:99;
fixed-address 192.168.10.99;
}
d. 編輯/etc/dhcp/dhcpd.conf其他部分
除在/etc/dhcp/dhcpd.conf末尾部分生成了綁定MAC和IP的部分配置以外,還需要做其他的修改,來使虛擬機從DHCP獲取IP時,指定虛擬機獲取壓縮內核的TFTP服務器
DHCP其實時bootstoop,網絡引導啟動協議的一部分,因此其在配置中保留了網絡引導的那部分功能。
修改配置如下:
# Use this to enble / disable dynamic dns updates globally.
#修改的內容
ddns-update-style interim;
ignore client-updates;
......
# pxelinux啟動文件位置;
filename "pxelinux.0";
# TFTP Server的IP地址
next-server 192.168.80.3;
subnet 192.168.80.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.80.10 192.168.80.254;
option broadcast-address 192.168.80.255;
option routers 192.168.80.3;
default-lease-time 21600;
max-lease-time 43200;
}
subnet 192.168.10.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.10.10 192.168.10.254;
option broadcast-address 192.168.10.255;
default-lease-time 21600;
max-lease-time 43200;
}
至此,DHCP的配置部分完成。
d. 啟動DHCP服務器
service dhcpd start && chkconfig dhcpd on
至此,無人值守部分到此已經配置完成。此時如果單獨創建一台虛擬機,並且配置虛擬機的MAC地址,然后啟動,則會從網絡引導自動安裝操作系統。
如:
創建虛擬機node11,配置為4vCPU,512M內存,8G系統盤,2塊以太網卡,MAC分別為:NAT eth0 00:00:00:80:00:11 ;Hostonly eth1 00:00:00:10:00:11
此時啟動node11,可以發現node11從DHCP獲取了IP:192.168.80.11,然后從TFTP獲取了vmlinuz和initrd.img,開啟加載操作系統,然后獲取了ks.cfg,啟動安裝程序,安裝ks.cfg中的軟件包,通過查看HTTP的日志可以看到獲取的軟件包等信息。
8.批量創建虛擬機
無人值守的環節已經完成了,這個時候只要能夠創建快速創建具有固定MAC的虛擬機,便可啟動虛機進行操作系統無人值守安裝了
上面博客內容已經提到了共享文件和虛擬機配置文件的作用,在這個環節就有很重要的體現了
a.添加共享目錄E盤
我的PC中,空出E盤來專門存放虛擬機的。因此可以把該盤通過共享目錄的方式,共享給console01,共享名稱為virtualcluster。
此時在console01的系統中,可以在/mnt/hgfs目錄下,看到這個目錄。后續的node11-node99,實際上使放置在/mng/hgfs/virtualcluster中,以nodexx命令的文件中,共88個
在windows系統下,進入E盤,可見virtualcluster文件夾下,分別使node11-node99的虛擬機安裝目錄。
b. 創建模板虛擬機
共享E盤到Linux系統中后,我首先要以一個模板為基礎,來生成其他虛擬機。在這里是有技巧要求的,因為后期需要通過變量的方式,來拷貝和替換模塊名稱和內容,因此需要一個特殊的處理。
我的特殊處理是:
創建一個nodeAA的虛擬機,配置為:4vCPU,512G內存,8G系統盤,2塊以太網卡,設置NAT的MAC為:00:00:00:80:00:AA,設置Hostonly的MAC為:00:00:00:10:00:AA
此時在nodeAA安裝目錄中,存在4個需要的虛擬機文件:nodeAA.vmdk nodeAA.vmsd nodeAA.vmx nodeAA.vmxf
其中,nodeAA.vmx為虛擬機配置文件,其中的內容可以修改,因為nodeAA安裝在共享目錄下,因為可以在shell環境中,輕松修改配置,當然離不開sed神器
c. 編輯批量創建虛擬機腳本
下面腳本是我自己實踐環境中的路徑,通過這種處理方式,在不超過30s的時間內,創建了從node11-node99台虛擬機。
#!/bin/bash
for node in $(seq 11 99)
do
mkdir /mnt/hgfs/virtualcluster/node${node}
cp nodeAA.vmdk /mnt/hgfs/virtualcluster/node${node}/node${node}.vmdk
cp nodeAA.vmxf /mnt/hgfs/virtualcluster/node${node}/node${node}.vmxf
cp nodeAA.vmsd /mnt/hgfs/virtualcluster/node${node}/node${node}.vmsd
cp nodeAA.vmx /mnt/hgfs/virtualcluster/node${node}/node${node}.vmx
sed -i "s/AA/${node}/g" /mnt/hgfs/virtualcluster/node${node}/node${node}.vmx
done
注:將該腳本放置在模板虛擬機nodeAA目錄下執行,便可在virtualcluster目錄下產生需要的虛擬機,虛擬機內部的名稱之類,都和設定的一樣
d. 通過vmrun.exe來批量快速啟動安裝
在第一篇博客中,其實已經談到了如何通過命令行執行vmrun.exe的方式來管理VMware workstation虛擬機,其中一個重要的管理就是啟動虛擬機。
因此, 我們通過vmrun.exe可以快速,或者批量啟動虛擬機,這些虛擬機從自己的配置文件中讀取MAC地址啟動,從DHCP獲取了自己的IP,從TFTP和HTTP獲取了自己的操作系統,啟動自動化安裝。
同時,我在ks.cfg文件中,編輯了啟動后的一些腳本,主要是配置固定IP和禁用IPv6的操作。其中很多內容都值得深入探討和研究。
總結:
至此,我基本上完成了以自己的方式來批量創建虛擬機和安裝操作系統的整個過程。
其實,對於創建虛擬機不講究的同學來說 ,分分鍾復制N台虛擬機使用,其實非常EASY。
但是因為我后期需要根據這些虛擬機做其他的實驗,比如上傳到vsphere,比如根據虛擬機名稱來管理虛擬機等操作,根據MAC地址和IP地址來協議分析等,對虛擬機的獨立性有很高的要求,因此采用上述兩篇博客的探索。
整個過程下來,對於各個知識點的學習和鞏固,對學習的實踐和思考,多少會有些幫助。
技術革新很快,但是人和思路都是活的。分享這篇博客,希望讀者都能夠有所獲得。
讀者朋友有任何問題,可致郵:yunweinote@126.com,歡迎探討!