参见英文答案 >
Correctly setting the hostname – Fedora 20 on Amazon EC25个
标题几乎说明了一切.我在运行CentOS 7的EC2中有一个VM.它使用DHCP,这似乎是EC2的要求.无论我尝试什么,DHCP都会在重启时不断覆盖主机名.我不会列举它,但我已经尝试了几乎所有的建议: Override DHCP hostname on RHEL5/CentOS/Amazon Linux以及谷歌搜索出现在其他几个网站上的那些建议.我不明白它是特定的OS版本还是AWS / EC2环境,但是我无法更改主机名并使其在重新启动时保持不变.甚至通过/etc/rc.d/rc.local强制它(添加“/ bin / hostnamectl set-hotname foo.bar.baz”)也行不通.我无法相信其他AWS / EC2用户没有想到这一点出来.请帮忙.
标题几乎说明了一切.我在运行CentOS 7的EC2中有一个VM.它使用DHCP,这似乎是EC2的要求.无论我尝试什么,DHCP都会在重启时不断覆盖主机名.我不会列举它,但我已经尝试了几乎所有的建议: Override DHCP hostname on RHEL5/CentOS/Amazon Linux以及谷歌搜索出现在其他几个网站上的那些建议.我不明白它是特定的OS版本还是AWS / EC2环境,但是我无法更改主机名并使其在重新启动时保持不变.甚至通过/etc/rc.d/rc.local强制它(添加“/ bin / hostnamectl set-hotname foo.bar.baz”)也行不通.我无法相信其他AWS / EC2用户没有想到这一点出来.请帮忙.
更新:
这也不起作用:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html即,在AWS的Route53中为该框添加DNS A记录(并验证它是否有效),并在/ etc / sysconfig / network中设置HOSTNAME = foo.bar.baz(在重启后检查)是也是徒劳的.
更新2:
针对Fedora 20回答了类似的问题.那里接受的解决方案还涉及重新配置cloud-init,但方式不同.此外,尚不清楚该问题/解决方案是否适用于其他发行版.因此,我觉得我的问题应该留给其他人运行CentOS并以这种方式进行搜索(是的,我知道Fedora和CentOS是兄弟姐妹,但并不是每个人在搜索解决方案时都会搜索所有同义词).
解决方法
好的.在得到答案之前,我在这个问题上花了大概五个小时. @ Sirex建议卸载cloud-init是一个线索.从本质上讲,cloud-init是大多数EC2映像(AMI)内置的服务,包括AMI Linux和CentOS.该系统做了很多事情(谷歌),并可能对某些配置和维护foo有用.因此,我犹豫是否只是禁用它.但是,它似乎也设置了EC2主机名.因此,要使用您首选的主机名覆盖它,只需执行以下操作:
(1)创建一个名为99 _… cfg(我命名为我的99_hostname.cfg)的文件,并将以下内容写入其中:
#cloud-config hostname: foo fqdn: foo.bar.baz
当然,用您的主机名和完全限定的域名替换“foo”和“foo.bar.baz”.
(2)将此文件放在/etc/cloud/cloud.cfg.d/99_hostname.cfg中
(3)确保通过以下命令正确设置文件权限/ owner / selinux上下文(如果您有SELinux强制执行):
sudo su - cd /etc/cloud/cloud.cfg.d/ chown root: 99_hostname.cfg chmod 644 99_hostname.cfg chcon system_u:object_r:etc_t:s0 99_hostname.cfg
(4)重新启动VM,并设置新的主机名.如果您不信任bash提示符,则可以通过执行以下任一操作来检查:
hostnamectl
要么
cat /etc/hostname