我们可以为EC2实例设置易于记忆的主机名吗?

我在EC2上运行了两个标准的Fedora实例。 我觉得亚马逊分配的实例的公有主机名太奇怪了,难以记住。 我想把它们改成简短的东西(比如红/蓝/绿/等)。

这样做有什么缺点吗? 我该如何设置,使其在重新启动后仍然存在?

谢谢。

    在开始之前,请尝试运行hostnamehostname --fqdn并记下响应的内容。

    您可以编辑/etc/hostname并设置一个主机名,在重新启动之后它将继续存在。 您可以使用hostname -F /etc/hostname将该值读入主机名中,强制主机名“重新加载”。 在注销和login后,bash提示符将会改变。

    警告/注意
    是的,把bash提示符中的主机名设置为比ip-123-123-123-123更有用的东西是很好的,但是我决定离开我(至less现在),因为它好像很多东西真正依靠以标准方式设置ec2实例的主机名。 编辑/etc/hostname并将/etc/hostname更改为webserver ,很多服务似乎失败,因为主机名不能parsing,并且apache不会启动。 接下来我编辑/etc/hosts并join

     127.0.0.1 webserver 

    作为第二行。 Apache然后会启动,但是抱怨说找不到FQDN。 我确认运行hostname --fqdn不再有效。

    接下来我咨询了man hostname并了解到,虽然你可以设置hostname但是看起来FQDN是通过DNS查找返回的。

    FQDN

    您不能使用此命令更改FQDN(由主机名–fqdn返回)或DNS域名(由dnsdomainname返回)。 系统的FQDN是parsing器(3)返回的主机名的名称。

    从技术上讲:FQDN是getaddrinfo(3)返回gethostname(2)返回的主机名的名称。 DNS域名是第一个点之后的部分。

    因此它取决于configuration(通常在/etc/host.conf)如何改变它。 通常(如果在DNS或NIS之前parsing主机文件),可以在/ etc / hosts中更改它。

    我认为可能设置系统/愚弄系统返回FQDN,就像ip-123-123-123-123.ec2.internal即使主机名是webserver但在这一点上,似乎开始看起来更像麻烦比它值得,而且对我来说,有一个更好的bash提示可能会导致很多软件和configuration问题,所以我决定放弃。

    我还了解到,很多amazon ec2实例使用了一些名为cloud-init的东西:

    cloud-init是处理云实例的早期初始化的Ubuntu包。 它安装在Ubuntu Cloud Images中,也安装在EC2上的官方Ubuntu镜像中。

    它configuration的一些东西是:

    • 设置默认的语言环境
    • 设置主机名
    • 生成ssh私钥
    • 添加ssh密钥到用户的.ssh / authorized_keys,以便他们可以login
    • 设置临时挂载点

    cloud-init的行为可以通过用户数据进行configuration。 用户数据可以由用户在实例启动时提供。 这是通过ec2-run-instances的–user-data或者–user-data-file参数完成的

    我也发现这个谈到如何使用cloud-initconfiguration主机名:

    在EBS实例上,closures和稍后启动将以不同的IP地址结束。

    在用户没有从其原始值修改/ etc / hostname(由元数据的“local-hostname”生成)的情况下,cloud-init将再次设置主机名并更新/ etc / hostname。

    在用户修改/ etc / hostname的情况下,它将保持用户pipe理。

    此外,如果/etc/cloud/cloud.cfg包含“preserve_hostname”值设置为True值,则不会触及/ etc / hostname。

    有意思的是,如果你不改变主机名,那么cloud-init软件包会使它保持最新状态。

    如果别人有解决方法或可以解决一些问题,并帮助确保没有什么会因为更改主机名ec2实例中断,我会很高兴听到它。

    以root身份编辑/etc/sysconfig/network

    更换

     HOSTNAME=localhost.localdomain 

     HOSTNAME=hostname.DOMAIN_NAME 

    然后,重新启动或运行/etc/init.d/network restart然后,服务器应该将其名称报告为FQDN。

    另一种方法是简单地编辑~/.bashrc并在机器的昵称之前加上PS1

    从这个网站 :

    更改正在运行的系统上的主机名

    在任何Linux系统上,您都可以使用命令“hostname”更改主机名(惊讶吗?)…以下是命令行主机名的一些快速用法:

    $>主机名

    没有任何参数,它将输出系统的当前主机名。

    $>主机名–fqd

    它将输出系统的完全限定的域名(或FQDN)。

    $>主机名NEW_NAME

    将系统的主机名设置为NEW_NAME。

    你也可以编辑/ etc / hostname(至less在Ubuntu上)。

    为了确保在AWS中重新启动后,请在/etc/rc.local中添加该命令,以便在机器启动时运行。

    还有一种通过USER_DATAdynamic设置主机名的方法:

    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

    echo $ HOSTNAME> / etc / hostname

    将系统主机名更改为公用DNS名称

    如果您已经注册了公共DNS名称,请按照此步骤操作。

    1)打开您喜欢的文本编辑器中的/etc/sysconfig/networkconfiguration文件,并更改HOSTNAME条目以反映完全限定的域名(例如webserver.mydomain.com)。

     HOSTNAME=webserver.mydomain.com 

    2)重新启动实例来获取新的主机名。

     [ec2-user ~]$ sudo reboot 

    3)login到您的实例,并validation主机名已被更新。 您的提示应该显示新的主机名(直到第一个“。”),hostname命令应该显示完全限定的域名。

     [ec2-user@webserver ~]$ hostname webserver.mydomain.com 

    要更改系统主机名而不使用公共DNS名称

    1)打开您喜欢的文本编辑器中的/etc/sysconfig/networkconfiguration文件,并更改HOSTNAME条目以反映所需的系统主机名(例如web服务器)。

     HOSTNAME=webserver.localdomain 

    2)在你最喜欢的文本编辑器中打开/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 

    3)重新启动实例来获取新的主机名。

     [ec2-user ~]$ sudo reboot 

    4)login到您的实例并validation主机名已被更新。 您的提示应该显示新的主机名(直到第一个“。”),hostname命令应该显示完全限定的域名。

     [ec2-user@webserver ~]$ hostname webserver.localdomain 

    注意:您也可以更改shell提示符而不影响主机名。 参考这个AWS文档 :

    当然,如果您拥有自己的域名(设置CNAME指向Amazon主机名),则可以这样做。 否则,你几乎被他们给你的那个(或者一个Elastic IP,如果你设置了其中一个)。

    如果你不想惹你的DNS提供者,你可以使用你的实例的别名。 我真的很惊讶,亚马逊没有提供给EC2实例的别名,当他们出来AWSpipe理控制台 ,但同时,如果你想要别名function,你可以使用免费的RightScale服务比记住这些Amazon实例ID更简单。

    /etc/rc.local解决scheme为我工作的基本主机名,但不给我一个FQDN。

     sudo hostname *yourdesiredhostnamehere* sudo /etc/init.d/networking restart 

    然后主机名被改变。 在我的服务器上所有其他的服务,如Apache和Postfix的作品。 服务器是Ubuntu 12.04 LTS

    在我的Linux AMI(其他实例的快照)中,上述公式都没有工作。 然后,我只是改变了文件:/etc/init.d/modifyhostname中的HOSTNAME字段,并正常重启。