供应期间如何将VM名称而非主机名传递给VM 简短版长版:更新

问题描述

简短版

通过vCenter API设置新虚拟机时,我们需要在初始启动/设置阶段将虚拟机的给定名称(vCenter UI中提供的名称,而不是主机名)传递给操作系统。我想知道是否有任何方法可以“询问”管理程序,以便从操作系统级别为我提供该名称?如果可能,我可以使用该名称并发出hostnamectl命令来设置静态名称,从而从DHCP服务器获得正确的IP(发送基于主机名的IP分配)。 VMware是否为这种查找提供任何API支持?

长版:)

我们正在使用Rancher通过其vSphere集成来配置k8s群集节点,效果很好。这些节点是通过cloud-config指令使用cloud-init进行自定义的,所有内容都像广告一样工作,除了一个很小但对我们来说非常重要的部分。

基本配置基于适应我们需求的CentOS7 7.7.1908 VM,该VM已转换为模板。在Rancher中,我们创建了一个称为“节点模板”的对象,该模板描述了应分配给已配置节点的各种设置。在这里,我们还提供了前面提到的cloud-config,它在配置期间作为.iso文件挂载。

现在,我要完成的工作是能够将预配置的VM名称(例如在vCenter中看到)传递给cloud-init,以便在其中设置静态主机名。对我们来说,这很重要,因为我们根据发送到DHCP服务器的主机名请求特定的IP。尽管在部署阶段稍后由“ Rancher Agent”正确设置了主机名,但是我们已经基于VM模板的主机名(可能是template-centos-7-7-1908)获得了IP!

我找到了一种解决方法,可以在cloud-init过程完成五分钟后安排(使用“ at”)“ dhclient -r; systemctl restart network ...”。它可以工作,但有一个主要缺点-我们最终会从初始主机名悬挂掉“ ghost IP分配”,这最终会消失 ,如果我们需要重新启动,可能会陷入困境-提供多个节点!

因此,我想做的就是将给定VM的名称注入cloud-init进程,以便我们可以发出“ hostnamectl set-hostname $ VM_NAME”,其中$ VM_NAME是注入的变量。是否在某处发明了任何VMware工具/ cloud-init东西或其他类似东西可以帮助我完成此任务?

非常感谢!!!!!!!

更新

上述 的过程可以解决工作程序节点的问题,但对于etcd /控制平面节点则不是 。根据我的经验,他们对IP:s非常挑剔,但是我可能会错过一些东西。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...