我在EC2上运行了几个标准的Fedora实例。我觉得亚马逊分配的实例的公共主机名太奇怪了,难以记住。我想将它们改成简短的东西(如红色/蓝色/绿色/等)。
这样做有什么缺点吗?我如何设置它以便在重新启动后仍然存在?
感谢。
答案 0 :(得分:83)
在开始之前,请尝试运行hostname
和hostname --fqdn
,并记下回复内容。
您可以编辑/etc/hostname
并设置主机名,重启后会一直存在。您可以使用hostname -F /etc/hostname
强制主机名“重新加载”以将该值读入主机名。登出并登录后,bash提示符将会更改。
警告/注意:
是的,很高兴将bash提示符中的主机名设置为比ip-123-123-123-123
更有用的东西,但我决定离开我的(至少目前为止),因为看起来很多东西都依赖于ec2实例上的主机名以标准方式设置。编辑/etc/hostname
并将主机名更改为webserver
后,很多服务似乎都失败了,因为主机名无法解析,并且apache无法启动。接下来,我编辑了/etc/hosts
并添加了
127.0.0.1 webserver
作为第二行。然后Apache会启动,但抱怨它无法找到FQDN。我确认运行hostname --fqdn
不再有效。
接下来,我咨询了man hostname
并了解到,虽然您可以设置hostname
,但FQDN
似乎是通过DNS查找返回的内容。
THE FQDN
您无法使用此命令更改FQDN(由hostname --fqdn返回)或DNS域名(由dnsdomainname返回)。系统的FQDN是解析程序(3)为主机名返回的名称。
技术上:FQDN是geadostname(2)返回的主机名的名称getaddrinfo(3)。 DNS域名是第一个点之后的部分。
因此,它取决于配置(通常在/etc/host.conf中)如何更改它。通常(如果在DNS或NIS之前解析hosts文件),您可以在/ etc / hosts中更改它。
我认为可以设置系统/傻瓜系统返回FQDN,类似于ip-123-123-123-123.ec2.internal
,即使主机名是webserver
但是此时开始看起来更麻烦比它值得,而且对我来说有一个更好的bash提示可能会导致很多软件和配置问题,所以我决定放弃。
我还了解到很多亚马逊ec2实例使用的是cloud-init:
cloud-init是Ubuntu包,用于处理云实例的早期初始化。它安装在Ubuntu Cloud Images中,也安装在EC2上的官方Ubuntu映像中。
它配置的一些东西是:
- 设置默认语言环境
- 设置主机名
- 生成ssh私钥
- 将ssh密钥添加到用户的.ssh / authorized_keys,以便他们可以登录
- 设置临时挂载点
cloud-init的行为可以通过用户数据进行配置。用户可以在实例启动时给出用户数据。这是通过ec2-run-instances
的--user-data或--user-data-file参数完成的
I also found this讨论了如何使用cloud-init配置主机名:
在EBS实例上,关闭和稍后启动将以不同的IP地址结束。
如果用户未从原始值修改/ etc / hostname(由元数据的'local-hostname'播种),则cloud-init将再次设置主机名并更新/ etc / hostname。
如果用户修改了/ etc / hostname,它将保持用户管理。
此外,如果/etc/cloud/cloud.cfg包含'preserve_hostname'值设置为True值,则不会触及/ etc / hostname。
有趣的是,如果您不更改主机名,cloud-init软件包将为您保持最新状态。
如果其他人有解决方法或可以解决上面提到的一些问题并帮助确保ec2实例上没有任何内容会因为更改主机名而中断,我很乐意听到它。
答案 1 :(得分:13)
另一种方法是简单地编辑~/.bashrc
并在PS1
前加上机器的昵称。
编辑:也许更正确,机器范围,例如在AWS Linux AMI上(示例)(将其粘贴到控制台或添加到任意安装.sh):
cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF
答案 2 :(得分:12)
以root身份修改/etc/sysconfig/network
。
替换
HOSTNAME=localhost.localdomain
与
HOSTNAME=hostname.DOMAIN_NAME
然后,重启或运行/etc/init.d/network restart
然后,服务器应将其名称报告为FQDN。
答案 3 :(得分:6)
来自this site:
更改正在运行的系统上的主机名
在任何Linux系统上,您可以使用命令
hostname
更改其主机名(惊讶?)... 以下是命令行主机名的一些快速用法:$> hostname
没有任何参数,它将输出系统的当前主机名。
$> hostname --fqd
它将输出系统的完全限定域名(或FQDN)。
$> hostname NEW_NAME
会将系统的主机名设置为
NEW_NAME
。
您还可以编辑/etc/hostname
(至少在Ubuntu上)。
要确保在AWS重新启动后它保持不变,请在/etc/rc.local
中添加命令,以便在计算机启动时运行。
还有一种方法set the hostname dynamically via USER_DATA:
USER_DATA=`/usr/bin/curl -s http://169.254.169.254/latest/user-data` HOSTNAME=`echo $USER_DATA` IPV4=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4` hostname $HOSTNAME echo $HOSTNAME > /etc/hostname
答案 4 :(得分:1)
将系统主机名更改为公有DNS名称
在您喜欢的文本编辑器中打开/etc/sysconfig/network
配置文件,并更改HOSTNAME条目以反映完全限定的域名(例如webserver.mydomain.com)。
HOSTNAME=webserver.mydomain.com
重新启动实例以获取新主机名。
[ec2-user ~]$ sudo reboot
登录您的实例并验证主机名是否已更新。您的提示应显示新的主机名(直到第一个“。”),hostname命令应显示完全限定的域名。
[ec2-user@webserver ~]$ hostname
webserver.mydomain.com
在您喜欢的文本编辑器中打开/etc/sysconfig/network
配置文件,并更改HOSTNAME条目以反映所需的系统主机名(例如Web服务器)。
HOSTNAME=webserver.localdomain
在您喜欢的文本编辑器中打开/etc/hosts
文件,并添加以127.0.1.1开头的条目(在DHCP系统上)或eth0的地址(在静态IP系统上)以匹配以下示例,替换您的自己的主机名。 (127.0.0.1应保留为localhost行。)
127.0.0.1 localhost localhost.localdomain
127.0.1.1 webserver.example.com webserver
重新启动实例以获取新主机名。
[ec2-user ~]$ sudo reboot
登录您的实例并验证主机名是否已更新。您的提示应显示新的主机名(直到第一个“。”),hostname命令应显示完全限定的域名。
[ec2-user@webserver ~]$ hostname
webserver.localdomain
注意:您还可以在不影响主机名的情况下更改shell提示符。请参阅this AWS documentation。
答案 5 :(得分:0)
当然,如果您拥有自己的域(设置CNAME指向Amazon主机名),则可以这样做。否则,你几乎坚持他们给你的那个(或者弹性IP,如果你设置其中一个)。
答案 6 :(得分:0)
/etc/rc.local解决方案适用于我的基本主机名,但没有给我一个FQDN。
答案 7 :(得分:0)
在我的Linux AMI(其他实例的快照)中。上述公式均无效。然后,我只需更改文件中的HOSTNAME字段:/etc/init.d/modifyhostname并正常重启。
答案 8 :(得分:0)
您需要做多件事来设置主机名:
hostname newname
- 设置主机名,但不稳定我把这些放在一个脚本中并上传为一个要点: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85
答案 9 :(得分:-1)
如果您不想弄乱DNS提供商,可以为实例使用别名。我很惊讶亚马逊在提出AWS Management Console时没有提供为EC2实例提供别名的方法,但与此同时,如果你使用免费的RightScale服务,你可以使用想要别名功能 - 比记住这些Amazon实例ID容易得多。
答案 10 :(得分:-1)
sudo hostname *yourdesiredhostnamehere*
sudo /etc/init.d/networking restart
然后更改主机名。在我的服务器上所有其他服务,如apache和postfix工作。服务器是Ubuntu 12.04 LTS