如何動態地給vSphere虛擬機器模板注入資訊

2022-01-30 22:23:35 字數 1658 閱讀 6936

在做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 很明顯這種管理方式需要此型別物件被分配在堆中。而其它一些時候你想獲得一種保障 不在堆中分配物件,從而保證某種型別的類不會發生記憶體洩漏。如...