Ubuntu 使用EC2 VPC实例的新主机名动态更新主机文件

Ubuntu 使用EC2 VPC实例的新主机名动态更新主机文件,ubuntu,amazon-web-services,ssh,hosts,amazon-vpc,Ubuntu,Amazon Web Services,Ssh,Hosts,Amazon Vpc,在Amazon Web Services上的EC2/VPC上的Ubuntu14服务器上运行sudo命令时,我遇到以下错误 sudo: unable to resolve host ip-xxx-xx-x-xx I将服务器的私有IP地址替换为x 为了解决这个问题,我需要编辑/etc/hosts文件。将以下行添加到hosts文件时: 127.0.0.1 ip-xxx-xx-x-xx 现在我不明白这个错误。127.0.0.1之后的值解析为hostname命令值。 问题是我可能会在将来创建一个AM

在Amazon Web Services上的EC2/VPC上的Ubuntu14服务器上运行
sudo
命令时,我遇到以下错误

sudo: unable to resolve host ip-xxx-xx-x-xx 
I将服务器的私有IP地址替换为x

为了解决这个问题,我需要编辑
/etc/hosts
文件。将以下行添加到hosts文件时:

127.0.0.1 ip-xxx-xx-x-xx
现在我不明白这个错误。127.0.0.1之后的值解析为
hostname
命令值。 问题是我可能会在将来创建一个AMI并恢复服务器,所以私有IP将发生变化。在中,他们建议添加一个脚本,用新的IP(主机名值)自动更新主机文件,这样在从AMI恢复服务器或自动缩放时它就可以工作了


我如何用hostname值更新hosts文件,这样我就不必担心将来的任何问题了?

如果您由于某种原因无法在VPC上启用
DNS主机名,那么您应该完全按照AWS论坛中的建议执行。编写脚本以自动更改
/etc/hosts
文件。例如:

#!/bin/bash
LOCAL_HOSTNAME=$(curl http://169.254.169.254/latest/meta-data/local-hostname)
cat << EOF >> /etc/hosts
127.0.0.1 $LOCAL_HOSTNAME
EOF
curl http://169.254.169.254/latest/meta-data/local-hostname | cut -d '.' -f1
启动时运行
有几种方法可以让它在启动时运行。我建议您从
rc.local
调用它(请参阅和)。别忘了给你的脚本执行权限。

几个noob问题:curl中的ip是什么,我在哪里编写脚本,它是什么扩展文件?1)AWS(以及可能的其他云提供商)使用ip将元数据分发到它们的实例。有关更多信息,请参阅;2) 您应该在根主目录(/root)中编写脚本。我将它命名为
rewrite etc hosts.sh
,然后授予它执行权限:
chmod u+x/root/rewrite etc hosts.sh
。非常感谢,我将遵循您的指导。更新:输入错误,我正在再次检查,现在应该可以工作了。如果您配置VPC来解析名称,应该不需要更新主机文件,.可能的副本