动机
我必须管理通过复制模板(VmWare 映像)创建的许多虚拟机。
问题
现在我遇到的问题是,模板中的文件/etc/hostname
包含一个给定名称,我想为模板的每个副本更改该名称。
事实
网络接口由 DHCP 配置。存在 DNS 条目。系统是 Ubuntu 9.10 服务器。
问题
我想知道我是否可以配置模板,以便在启动时它根据其 DNS 名称设置其主机名。
我可以创建一个初始化脚本来解析 IP 地址、进行 DNS 查找并相应地设置主机名。
但有没有更简单的方法呢?
答案1
如果机器已经有 IP 地址,尝试更改主机名是个坏主意。定义主机名应该只在系统/VM 启动期间进行。
好消息是:如果虚拟机是基于 Linux[1] 的,并且具有唯一的 MAC 地址[2],则可以通过 DHCP 设置主机名。dhcpd.conf 中的适用部分应类似于以下内容:
主机 box1 { 硬件以太网 00:AC:08:22:FC:B2;固定地址 192.168.2.5;选项主机名“box1”;}
建议查看您正在运行的 DHCP 服务器的文档。
限制/评论:
- 您可能还想定义“选项域名”
- 只能在虚拟机启动期间设置(覆盖系统的现有主机名会导致问题)
- 您可能需要在 dhclient 配置中定义“请求主机名”
- DHCP 服务器必须与客户端位于同一网络“段”(即远程计算机的 MAC 地址不“可见”)
[1] 我最后知道的是 Windows 不支持此功能。不过,时间已经过去很久了,所以这可能不再是一个准确的说法。
[2] 假定为真,因为 VMware 不会运行具有相同 MAC 地址的多个虚拟机。