如何解决供应期间如何将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 举报,一经查实,本站将立刻删除。