我运行了一对夫妇的标准Fedora实例EC2。我觉得公主机名称的实例分配给亚马逊太奇怪,很难记住。我想改变他们的东西短(喜欢红色的,蓝色,绿色,等等)。

是否有任何出于这样做呢?和我如何设立这样,它仍然存在之后重新启动?

谢谢。

有帮助吗?

解决方案

在你开始之前,尝试运行 hostnamehostname --fqdn 并注意到什么反应。

你可以编辑 /etc/hostname 并设置一名,这将坚持后重新启动。你能力的主机名称是"重新装载"通过使用 hostname -F /etc/hostname 阅读,值进入主机名称。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 lookup.

FQDN

你不能改变的FQDN(如返回的主机名称--fqdn)或域名(如返回的dnsdomainname)与这种命令。FQDN系统的名称,冲突解决程序(3)返回的主机名称。

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

因此,它取决于结构(通常是在主机。conf)你怎么可以改变它。通常是(如果主机文件进行分析之前DNS或NIS)可以改变这/etc/主机。

我想它可能可以设置的系统/傻瓜的系统进入返回FQDN,类似的东西 ip-123-123-123-123.ec2.internal 即使hostname webserver 但在这一点上开始似乎是更多的麻烦比它的价值,并为我有一个更好的庆典提示可能会造成很大的软件和配置问题的道路,所以我决定放弃。

我还了解到,很多亚马逊ec2实例中使用的东西叫 云-初始化:

云init Ubuntu包处理初始化的一个云的实例。它是安装在Ubuntu云图像,并且在官方Ubuntu的图像,可在EC2。

一些事情,它配置为:

  • 设置一个默认的语言区域
  • 设置hostname
  • 产生ssh的私人钥匙
  • 加ssh钥匙的用户。ssh/authorized_keys,使他们可以登录
  • 设立临时安装点

云init的行为可以构成通过用户的数据。用户的数据可以通过用户实例启动时间。这样做是通过--用户的数据或--用户的数据文件的参数t2的运行实例

我也发现了这个 其中谈到如何hostname配置有云init:

在EBS情况下,关闭和以后开始最终会有一个IP地址不同。

在该情况下,用户尚未修改/etc/hostname从其原有的价值(通过接种元数据的'当地主机名称'),则云init会再次设定的主机名称和更新/etc/hostname.

在该情况下,用户拥有修改/etc/hostname,它仍将是用户管理。

此外,如果/etc/云云。cfg包含'preserve_hostname价值设置为一个真正的价值,然后/etc/hostname永远不会被感动。

有趣的外卖的是,如果你不改变hostname云init包将会保持它迄今为你。

如果有人别的有一个解决方法或可以解决的一些提到的问题,并帮助保证,什么都不会打破ec2实例,因为改变hostname我会很乐意听到它。

其他提示

另一种方法是简单地编辑〜/ .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

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

替换

HOSTNAME=localhost.localdomain

HOSTNAME=hostname.DOMAIN_NAME

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

来自这个网站

  

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

     

在任何Linux系统上,您可以使用 hostname 命令更改其主机名(惊讶?)&#8230;   以下是命令行主机名的一些快速用法:

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
gt; hostname NEW_NAME
gt; hostname --fqd
gt; hostname
     

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

<*>      

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

<*>      

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

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

要确保在AWS重新启动后它保持不变,请在 /etc/rc.local 中添加命令,以便在计算机启动时运行。

还有一种方法可以设置主机名通过USER_DATA动态

<*>

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

如果您已注册公共DNS名称

,请执行此过程
  1. 在您喜欢的文本编辑器中打开 / etc / sysconfig / network 配置文件,并更改HOSTNAME条目以反映完全限定的域名(例如webserver.mydomain.com)。

    HOSTNAME=webserver.mydomain.com
    
  2. 重新启动实例以获取新主机名。

    [ec2-user ~]$ sudo reboot
    
  3. 登录您的实例并验证主机名是否已更新。您的提示应显示新的主机名(直到第一个“。”),hostname命令应显示完全限定的域名。

    [ec2-user@webserver ~]$ hostname
    webserver.mydomain.com
    
  4. 更改没有公用DNS名称的系统主机名

    1. 在您喜欢的文本编辑器中打开 / etc / sysconfig / network 配置文件,并更改HOSTNAME条目以反映所需的系统主机名(例如webserver)。

      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@webserver ~]$ hostname
      webserver.localdomain
      
    4. 登录您的实例并验证主机名是否已更新。您的提示应显示新的主机名(直到第一个“。”),hostname命令应显示完全限定的域名。

      <*>
    5. 注意:您还可以在不影响主机名的情况下更改shell提示符。请参阅此AWS文档

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

/etc/rc.local解决方案适用于我的基本主机名,但没有给我一个FQDN。

在我的Linux AMI(其他实例的快照)中。上述公式均无效。然后,我只需更改文件中的HOSTNAME字段:/etc/init.d/modifyhostname并正常重启。

您需要做多件事来设置主机名:

  1. hostname newname - 设置主机名,但不稳定
  2. 编辑/ etc / hostname - 设置下次重启的主机名
  3. 编辑/ etc / hosts - 让sudo不要抱怨
  4. 我把这些放在一个脚本中并上传为一个要点: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

如果您不想弄乱DNS提供商,可以为实例使用别名。我真的很惊讶亚马逊没有提供一种方法来为EC2实例提供别名,当他们推出 AWS管理控制台,但与此同时,如果您需要,可以使用免费的 RightScale 服务别名功能 - 比记住这些Amazon实例ID容易得多。

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

然后更改主机名。在我的服务器上所有其他服务,如apache和postfix工作。服务器是Ubuntu 12.04 LTS

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top