我在EC2上运行了几个标准的Fedora实例.我觉得亚马逊分配的实例的公共主机名太奇怪了,难以记住.我想将它们改成短的(如红色/蓝色/绿色/等).
这样做有什么缺点吗?我如何设置它以便在重新启动后仍然存在?
谢谢.
在开始之前,请尝试运行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查找返回的内容.
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实例上没有任何内容会因为更改主机名而中断,我很乐意听到它.
另一种方法是简单地编辑~/.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
/etc/sysconfig/network
以root身份编辑.
更换
HOSTNAME=localhost.localdomain
同
HOSTNAME=hostname.DOMAIN_NAME
然后,重新启动或运行/etc/init.d/network restart
服务器然后应将其名称报告为FQDN.
从这个网站:
更改正在运行的系统上的主机名
在任何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