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

Amazon ec2 我们可以为EC2实例设置易于记忆的主机名吗?,amazon-ec2,hostname,Amazon Ec2,Hostname,我正在EC2上运行两个标准Fedora实例。我觉得Amazon分配的实例的公共主机名太奇怪,很难记住。我想把它们改成短的(如红色/蓝色/绿色等) 这样做会有任何退步吗?我如何设置它,使其在重新启动后仍然存在 谢谢。当然,如果你有自己的域名(设置一个CNAME指向亚马逊主机名),你可以这样做。否则,您会被他们提供给您的服务(或者弹性IP,如果您设置了这些服务之一)。如果您不想与DNS提供商发生冲突,您可以为您的实例使用别名。我真的很惊讶,Amazon在推出时没有为EC2实例提供别名,但与此同时,如

我正在EC2上运行两个标准Fedora实例。我觉得Amazon分配的实例的公共主机名太奇怪,很难记住。我想把它们改成短的(如红色/蓝色/绿色等)

这样做会有任何退步吗?我如何设置它,使其在重新启动后仍然存在


谢谢。

当然,如果你有自己的域名(设置一个CNAME指向亚马逊主机名),你可以这样做。否则,您会被他们提供给您的服务(或者弹性IP,如果您设置了这些服务之一)。

如果您不想与DNS提供商发生冲突,您可以为您的实例使用别名。我真的很惊讶,Amazon在推出时没有为EC2实例提供别名,但与此同时,如果您想要别名功能,您可以使用免费服务—比记住那些Amazon实例ID容易得多

对于基本主机名,/etc/rc.local解决方案对我有效,但没有给我FQDN。

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

替换

HOSTNAME=localhost.localdomain

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

来自:

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

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

$> hostname
不带任何参数,它将输出系统的当前主机名

$> hostname --fqd
$> hostname NEW_NAME
它将输出系统的完全限定域名(或FQDN)

$> hostname --fqd
$> hostname NEW_NAME
将系统主机名设置为
NEW\u NAME

您还可以编辑
/etc/hostname
(至少在Ubuntu上)

为了确保它在AWS中重新启动后保持不变,可以在
/etc/rc.local
中添加命令,使其在机器启动时运行

还有一种方法可以:


开始之前,请尝试运行
hostname
hostname--fqdn
,并记下响应内容

您可以编辑
/etc/hostname
并设置主机名,该主机名将在重新启动后保留。通过使用
hostname-F/etc/hostname
将该值读入主机名,可以强制“重新加载”主机名。退出并登录后,bash提示将更改

警告/注意
是的,将bash提示符中的主机名设置为比
ip-123-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查找返回的

FQDN 无法使用此命令更改FQDN(由主机名--FQDN返回)或DNS域名(由dnsdomainname返回)。系统的FQDN是解析程序(3)为主机名返回的名称

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

因此,它取决于如何更改配置(通常在/etc/host.conf中)。通常(如果主机文件是在DNS或NIS之前解析的),您可以在/etc/hosts中更改它

我认为有可能设置系统/欺骗系统返回FQDN,类似于
ip-123-123-123.ec2.internal
,即使主机名是
webserver
,但在这一点上,它开始看起来麻烦太多了,对我来说,有一个更好的bash提示符可能会导致很多软件和配置问题,所以我决定放弃

我还了解到,许多amazon ec2实例使用了一种称为:

cloud init是Ubuntu包,用于处理云实例的早期初始化。它安装在Ubuntu云映像中,也安装在EC2上提供的官方Ubuntu映像中

它配置的一些内容包括:

  • 设置默认区域设置
  • 设置主机名
  • 生成ssh私钥
  • 将ssh密钥添加到用户的.ssh/authorized_密钥,以便他们可以登录
  • 设置临时挂载点
cloud init的行为可以通过用户数据进行配置。用户可以在实例启动时提供用户数据。这是通过ec2运行实例的--user data或--user data file参数完成的

其中介绍了如何使用cloud init配置主机名:

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

如果用户没有从其原始值(由元数据的“本地主机名”作为种子)修改/etc/hostname,则cloud init将再次设置主机名并更新/etc/hostname

[ec2-user ~]$ sudo reboot
[ec2-user ~]$ sudo reboot
如果用户修改了/etc/hostname,它将保持用户管理

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

有趣的是,如果不更改主机名,cloud init包将为您保持最新

如果其他人有解决办法或能够解决上述问题,并帮助确保没有任何问题可以解决
HOSTNAME=webserver.mydomain.com
[ec2-user ~]$ sudo reboot
[ec2-user@webserver ~]$ hostname
webserver.mydomain.com
HOSTNAME=webserver.localdomain
127.0.0.1   localhost localhost.localdomain
127.0.1.1   webserver.example.com webserver
[ec2-user ~]$ sudo reboot
[ec2-user@webserver ~]$ hostname
webserver.localdomain