在做vsphere自動化安裝過程中,遇到這樣乙個需求:將vcenter server做成模板,在給使用者自動化裝好vsphere後,
可是vcenter server的ip不是固定的,而是在自動化安裝vsphere集群請求到來時由網路模組分配並傳送過來的,因
此在做vcenter server模板時是無法寫入某個ip的。那如果在vcenter server虛擬機器啟動前,將網路模組傳送過來的ip
注入到模板的配置檔案中,然後vcenter server虛擬機器啟動後使用內部命令獲取到這個ip給自己配上,這樣使用者就可
以使用該ip連線vcenter server了。
這個哥們
法:在vsphere中,每個虛擬機器都帶有乙個字尾名為vmx的檔案,這個檔案幹嘛呢,看
這裡。在虛擬機器啟動前,往vmx文
件注入一些資訊,shell指令碼如下:
echo guestinfo.mgr_ip = "$cluster_ip" >> /vmfs/volumes/$datastore/vcenter_server/vcenter_server.vmx
echo guestinfo.mgr_netmask = "$cluster_netmask" >>/vmfs/volumes/$datastore/vcenter_server/vcenter_server.vmx
echo guestinfo.mgr_gateway = "$cluster_gateway" >>/vmfs/volumes/$datastore/vcenter_server/vcenter_server.vmx
其中cluster_ip,cluster_netmask,cluster_gateway的值就是之後vcenter server啟動後給自己配置的ip資訊。然後
在宿主機內啟動vcenter server虛擬機器:
#power vcsa on
vim-cmd vmsvc/getallvms|grep vcenter_server|awk |xargs vim-cmd vmsvc/power.on
在vcenter server內部,第一次開機啟動時,執行下面的命令提取出之前注入配置檔案的ip資訊,給自己配上:
cluster_ip=`vmtoolsd --cmd "info-get guestinfo.mgr_ip"`
cluster_netmask=`vmtoolsd --cmd "info-get guestinfo.mgr_netmask"`
cluster_gateway=`vmtoolsd --cmd "info-get guestinfo.mgr_gateway"`
sed -i "s/ipaddr=/ipaddr=$mgr_ip/g" /etc/sysconfig/network/ifcfg-eth0
sed -i "s/netmask=/netmask=$mgr_netmask/g" /etc/sysconfig/network/ifcfg-eth0
echo "$mgr_gateway" >> /etc/sysconfig/network/routes
完,如果這個方法對你有用,請點個贊,好讓韋哥知道真還有人用到。
DHCP伺服器如何動態地為主機分配IP位址?
dhcp是動態主機配置協議的縮寫。它是主機用於獲取網路設定資訊的應用層協議。dhcp由dhcp伺服器控制,動態分配網路配置引數,如ip位址,子網掩碼和閘道器位址。配置主機連線到網路時,可以手動完成,也可以由網路管理員或dhcp伺服器完成。對於家庭網路,手動配置非常簡單。而在大型網路中,網路管理員可能...
為路徑名動態地分配空間
include apue.h include include ifdef path max static int pathmax path max else static int pathmax 0 endif define susv3 200112l static long posix versi...
確保類總是動態地建立的一種辦法
more effective c 條款27 要求或禁止基於堆的物件 有時你想這樣管理某些物件,要讓某種型別的物件能夠自我銷毀,也就是能夠 delete this 很明顯這種管理方式需要此型別物件被分配在堆中。而其它一些時候你想獲得一種保障 不在堆中分配物件,從而保證某種型別的類不會發生記憶體洩漏。如...