如何动态地给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

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

时间: 2024-09-27 09:59:13

如何动态地给vSphere虚拟机模板注入信息的相关文章

vSphere部署系列之10——虚拟机模板和规范

在前面的博文章节中,已搭建了群集,并启用了HA和DRS,但还没有划分资源池,这种情况已经可以应付实际生产环境.资源池的创建和配置比较简单.难点在对配额的理解和按需划分.有兴趣的朋友可以网上查阅相关资料,这里暂不作研究. vCenter提供了模板功能,可把一台已部署好的虚拟机转换为模板,然后以此模板为镜像批量部署虚拟机.这一节是关于虚拟机模板及其管理规范方面的操作. 实验环境总体规划,请见前面的博文<vSphere部署系列之03--实验环境总体规划> ▲总体规划网络拓扑图 一.前期工作 在使用模

vmvare&amp;vsphere制作虚拟机模板

VMware/vSphere中新安装好的虚拟机把以下两个文件添加注释后,即可转换为虚拟机模板添加注释[root]# cat /etc/udev/rules.d/70-persistent-net.rules# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8c:19:a6", ATTR{type}=="1",

服务端模板注入(SSTI攻击)

服务端模板注入 1.模板注入原理 和常见Web注入的成因一样,也是服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露.代码执行.GetShell 等问题.其影响范围主要取决于模版引擎的复杂性. <?php require_once dirname(__FILE__).'/../lib/Twig/Autoloader.php'; Twig_Autoloader::register(true); $twig

(桌面虚拟化最佳实践--呼叫中心系统优化之三)虚拟机模板优化项目

关闭系统还原 安装完操作系统后请首先关闭系统还原,路径:控制面板-系统-系统还原. 修改磁盘格式 参考安装指南,创建模板机时不要使用IDE磁盘,推荐SCSI格式, xp推荐使用LSI Logic并行格式,Win7推荐使用SAS格式. 安装操作系统补丁 安装最新的windows补丁程序. 虚拟机资源配置 在绝大部分情况下,建议虚拟机配置为1vCPU,CPU配置多了反而会增加调度开销,影响性能.为谨慎起见,可部署2批桌面,一批为1vCPU,一批为2vCPU,让员工试用,并分别收集两种场景下的用户体验

2 - 创建与应用虚拟机模板

环境信息 名称 角色 Lynn-PC Hyper-V主机 Windows Server 2016 Hyper-V虚拟机模板 RRAS Hyper-V虚拟机 1.  创建虚拟机模板 1.1  新建虚拟机 1.   打开"Hyper-V Manager",点击"New"-"Virtual Machine-": 2.   点击"Next": 3.   此次实验环境将使用Windows Server 2016操作系统,输入虚拟机名称&

使用PowerShell将虚拟机模板(.VMTX)添加到清单

这是一个脚本,它将扫描数据存储中的VM模板(.VMTX),并将其添加到清单中.这是“ 将虚拟机(.VMX)添加到清单”  脚本的修改版本. 您必须安装VMware PowerCLI才能拥有PowerShell运行脚本所需的cmdlet. 将VMTX(虚拟机模板)从数据存储添加到清单: 1 2 3 4 五 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 三十 31 32 33 34 35 36 37 38 39

VMM创建虚拟机模板按钮不可用

在部署完SCVMM之后,有些朋友可能就迫不及待的想建个虚拟机模板玩玩,但是却发现创建虚拟机模板的按钮是灰色的,不可用.如下图 创建VM模板不可用,一般是操作系统的信息是"未知" 解决办法: 打开虚拟机属性,选择操作系统 修改之后,创建VM模板的按钮就可以正常使用了

OPENSTACK在RHEL7安装;admin创建虚拟机模板供demo使用

首先RHEL7安装,导入镜像,选择第一个安装7.0,接着出现下面的界面,我这安装截图来自虚拟机,真正做实验是在物理机,一般需要内存5个G 选择英文 时间选择上海,software selection选择Server UI(加上图形化界面),设置installation destination最后点击begin installation 重新配置分区 点done,一步步继续,下面截图,来自别人提供,我当时忘记截图了 左边添加root密码,右边创建用户 把勾选的enable取消掉 不注册 OK,等待

创建一个优质可用的Hyper-V虚拟机模板

虚拟化环境中,为了节省部署大量虚拟机的时间,管理员通常会事先创建一个优质可用的虚拟机模板.以下是我通常制作Hyper-V虚拟机模板文件所做的一些设置,尽可能使虚拟机发挥最大的性能. 一. 设置Hyper-V虚拟机 通常在新建一个Windows Server虚拟机时需要定义系统盘为多大,以便有足够的空间安装软件.存储文件等,在我所设置的虚拟机中,一般设置系统C盘为100G 考虑到未来部署的虚拟机将会迁移到其他Hyper-V主机中,因此有必要设置允许"迁移到具有不同处理器版本的物理计算机"