我注意到,在使用预置种子部署虚拟机时,预置种子中指定的主机名将被忽略,而使用 DNS 服务器中的主机名。
详细说明
Ubuntu Server 计算机的部署使用:
virt-install \
--name custom-name \
--initrd-inject /some-path/preseed.cfg \
--extra-args "preseed/file=preseed.cfg" \
...
预置文件包含以下几行(请注意custom-name
第二行的值):
...
d-i netcfg/disable_dhcp boolean true
...
d-i netcfg/get_hostname string custom-name
d-i netcfg/get_domain string pelicandd.com
d-i netcfg/get_ipaddress string 192.168.1.35
...
另一方面,DNS 服务器包含 A 记录:
demo IN A 192.168.1.35
以及 PTR 记录:
35 IN PTR demo.example.com.
一旦创建了机器,它就会/etc/hostname
包含以下内容:
demo
其中/etc/hosts
包含:
127.0.0.1 localhost
192.168.1.35 demo.example.com demo
问题
我对部署过程访问 DNS 服务器来获取信息这一事实并不满意。这不仅耗时,而且在某些情况下,DNS 服务器可能会宕机(例如正在部署 DNS 服务器本身的情况)。
我应该在预置中指定什么来阻止安装程序访问 DNS 来检索预置中已有的信息?
答案1
RTFM 有帮助。来自Debian 的预置示例:
# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the questions
# from being shown, even if values come from dhcp.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
# If you want to force a hostname, regardless of what either the DHCP
# server returns or what the reverse DNS entry for the IP is, uncomment
# and adjust the following line.
#d-i netcfg/hostname string somehost
这意味着这netcfg/get_hostname
无关紧要:其唯一目的是首先阻止安装程序提出问题。
确实,当我设置的值时netcfg/hostname
,/etc/hostname
和都/etc/hosts
包含预置种子中指定的值,忽略 DNS PTR 记录。