zoukankan      html  css  js  c++  java
  • 如何动态地给vSphere虚拟机模板注入信息

    在做vSphere自动化安装过程中,遇到这样一个需求:将vCenter Server做成模板,在给用户自动化装好vSphere后,

    下载vCenter Server模板并启动虚拟机,然后将vCenter Server的IP返回给用户,用户即可使用vSphere集群。

    可是vCenter Server的IP不是固定的,而是在自动化安装vSphere集群请求到来时由网络模块分配并发送过来的,因

    此在做vCenter Server模板时是无法写入某个IP的。那如果在vCenter Server虚拟机启动前,将网络模块发送过来的IP

    注入到模板的配置文件中,然后vCenter Server虚拟机启动后使用内部命令获取到这个IP给自己配上,这样用户就可

    以使用该IP连接vCenter Server了。


    这个哥们写了很多VMware相关的技术文章,但还是没有提到这个问题的解决办法,韦哥经过自己琢磨,找到一种方

    法:

    在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 {'print $1'}|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


    完,如果这个方法对你有用,请点个赞,好让韦哥知道真还有人用到。

  • 相关阅读:
    第五周进度条
    《掌握需求过程》阅读笔记01
    第三周进度条
    问题账户需求分析
    2016年秋季阅读个人计划
    梦断代码阅读笔记03
    软件工程概论课程总结
    Python爬取上交所一年大盘数据
    Python爬取6271家死亡公司数据,看十年创业公司消亡史
    python:王思聪究竟上了多少次热搜?
  • 原文地址:https://www.cnblogs.com/woshiweige/p/4518423.html
Copyright © 2011-2022 走看看