使用 EC2 VPC 实例的新主机名动态更新主机文件
Dynamically updating hosts file with new hostname for EC2 VPC instance
当 运行 在 Amazon Web Services EC2/VPC 上的 Ubuntu 14 服务器上执行 sudo
命令时,我收到以下错误。
sudo: unable to resolve host ip-xxx-xx-x-xx
我把服务器的私有IP地址换成了x。
为了解决这个问题,我需要编辑 /etc/hosts
文件。当我将以下行添加到主机文件时:
127.0.0.1 ip-xxx-xx-x-xx
现在我没有收到错误。 127.0.0.1 之后的值解析为 hostname
命令值。
问题是以后我可能会创建一个AMI并恢复服务器,所以私有IP会改变。在 AWS forum 中,他们建议添加一个脚本,使用新 IP(hostname
值)自动更新主机文件,以便在从 AMI 恢复服务器或自动缩放时工作。
如何使用主机名值更新 hosts 文件,这样我就不需要担心任何未来的问题?
如果您出于某种原因无法在您的 VPC 上启用 DNS hostnames
,那么您应该完全按照 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
注意:这将覆盖整个主机文件,因此请确保您在其中写入了所有需要的内容。
根据 AWS documentation,local-hostname
将 return 类似于 ip-10-251-50-12.ec2.internal
。如果这不是您想要的,请检查上述文档中的其他可用元数据。
假设您不想要 .ec2.internal
部分,您可以自定义脚本以使用 cut
删除该部分。示例:
curl http://169.254.169.254/latest/meta-data/local-hostname | cut -d '.' -f1
运行 启动时
有几种方法可以在启动时使其 运行。我建议您从 rc.local
调用它(参见 here and here)。不要忘记给你的脚本执行权限。
当 运行 在 Amazon Web Services EC2/VPC 上的 Ubuntu 14 服务器上执行 sudo
命令时,我收到以下错误。
sudo: unable to resolve host ip-xxx-xx-x-xx
我把服务器的私有IP地址换成了x。
为了解决这个问题,我需要编辑 /etc/hosts
文件。当我将以下行添加到主机文件时:
127.0.0.1 ip-xxx-xx-x-xx
现在我没有收到错误。 127.0.0.1 之后的值解析为 hostname
命令值。
问题是以后我可能会创建一个AMI并恢复服务器,所以私有IP会改变。在 AWS forum 中,他们建议添加一个脚本,使用新 IP(hostname
值)自动更新主机文件,以便在从 AMI 恢复服务器或自动缩放时工作。
如何使用主机名值更新 hosts 文件,这样我就不需要担心任何未来的问题?
如果您出于某种原因无法在您的 VPC 上启用 DNS hostnames
,那么您应该完全按照 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
注意:这将覆盖整个主机文件,因此请确保您在其中写入了所有需要的内容。
根据 AWS documentation,local-hostname
将 return 类似于 ip-10-251-50-12.ec2.internal
。如果这不是您想要的,请检查上述文档中的其他可用元数据。
假设您不想要 .ec2.internal
部分,您可以自定义脚本以使用 cut
删除该部分。示例:
curl http://169.254.169.254/latest/meta-data/local-hostname | cut -d '.' -f1
运行 启动时
有几种方法可以在启动时使其 运行。我建议您从 rc.local
调用它(参见 here and here)。不要忘记给你的脚本执行权限。