当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我们可以为EC2实例设置易于记忆的主机名吗?》经验,为你挑选了4个好方法。

我在EC2上运行了几个标准的Fedora实例.我觉得亚马逊分配的实例的公共主机名太奇怪了,难以记住.我想将它们改成短的(如红色/蓝色/绿色/等).

这样做有什么缺点吗?我如何设置它以便在重新启动后仍然存在?

谢谢.



1> cwd..:

在开始之前,请尝试运行hostnamehostname --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查找返回的内容.

FQDN

您不能使用此命令更改FQDN(由hostname --fqdn返回)或DNS域名(由dnsdomainname返回).系统的FQDN是解析程序(3)为主机名返回的名称.

技术上:FQDN是名称getaddrinfo(3)返回gethostname(2)返回的主机名.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参数完成的

我还发现了这个讨论如何使用cloud-init配置主机名:

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

如果用户未从其原始值修改/ etc/hostname(由元数据的'local-hostname'播种),则cloud-init将再次设置主机名并更新/ etc/hostname.

在用户修改了/ etc/hostname的情况下,它将保持用户管理.

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

有趣的是,如果您不更改主机名,cloud-init软件包将为您保持最新状态.

如果其他人有解决方法或可以解决上面提到的一些问题,并帮助确保ec2实例上没有任何内容会因为更改主机名而中断,我很乐意听到它.


链接到文档:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html(注意:它是假设亚马逊Linux编写的;我使用的是Ubuntu,所以我会编辑/ etc /主机名而不是/ etc/sysconfig/networking.)
非常有帮助.
你必须欺骗机器才能修复"hostname --fqdn".如果您向/ etc/hosts添加类似"127.0.0.1 webserver.example.com webserver"的内容,则它可以正常工作.hosts文件的预期语法是"ip hostname alias".

2> youurayy..:

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



3> 小智..:

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

更换

HOSTNAME=localhost.localdomain

HOSTNAME=hostname.DOMAIN_NAME

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



4> Rafa..:

从这个网站:

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

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

$>主机名

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

$> hostname --fqd

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

$>主机名NEW_NAME

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

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

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

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

USER_DATA =hostname

HOSTNAME =NEW_NAME

IPV4 =/etc/hostname

主机名$ HOSTNAME

echo $ HOSTNAME>/etc/hostname

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有