标题几乎说明了一切。 我有一台运行CentOS 7的EC2虚拟机。它使用DHCP,这似乎是一个EC2的要求。 无论我尝试什么,DHCP都会在重新启动时覆盖主机名。 我不会列举它,但是我已经尝试了几乎所有的build议: 在RHEL5 / CentOS / Amazon Linux上覆盖DHCP主机名 ,以及在谷歌search出现的其他几个网站上发现的主机名 。 我不明白,如果它是特定的操作系统版本或AWS / EC2环境,但我不能改变主机名,并坚持重新启动。 即使通过/etc/rc.d/rc.local暴力强制它(添加“/斌/主机名setl hotname foo.bar.baz”没有工作。我不相信其他AWS / EC2用户还没有想通请帮助。
更新:这也不起作用: http ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html也就是说,添加一个AWS的Route53中的框的DNS Alogging(并validation它的工作原理) ,并在/ etc / sysconfig / network中设置HOSTNAME = foo.bar.baz(重启后检查)也是徒劳的。
更新2: Fedora 20也回答了类似的问题。 那里接受的解决scheme还涉及重新configurationcloud-init,尽pipe以不同的方式。 另外,还不清楚这个问题/解决scheme是否适用于其他发行版。 因此,我觉得我的问题可能应该保留给那些运行CentOS并以这种方式寻找的人(是的,我知道Fedora和CentOS是兄弟姐妹,但不是每个人在search解决scheme时都会search同义词)。
好的。 在回答问题之前,我总共花了五个小时解决这个问题。 @ Sirex的build议是卸载cloud-init是一个线索。 实质上,cloud-init是大多数EC2映像(AMI)内置的服务,包括AMI Linux和CentOS。 该系统做了很多事情(谷歌它),可能是有用的某些configuration和维护美孚。 因此,我不愿意简单地禁用它。 但是,它也似乎是设置EC2主机名。 因此,要使用您的首选主机名覆盖它,只需执行以下操作:
(1)创build一个类似于99 _… cfg的文件(我将它命名为我的99_hostname.cfg),并将以下内容写入其中:
#cloud-config hostname: foo fqdn: foo.bar.baz
当然,用你的主机名和完全合格的域名replace“foo”和“foo.bar.baz”。
(2)将此文件放在/etc/cloud/cloud.cfg.d/99_hostname.cfg中
(3)通过这些命令,确保文件权限/所有者/ 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)重启虚拟机,并设置新的主机名。 如果你不信任你的bash提示符,你可以检查这个,例如,执行以下任一操作:
hostnamectl
要么
cat /etc/hostname
卸载cloud-init。
这第一次让我开心:-)
仍然期待着找出时间来解决如何让cloud-init像预期的那样设置主机名(从一个标签或者类似的东西) – 我还没有得到那么多。