当前位置:  开发笔记 > 运维 > 正文

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

如何解决《使用EC2VPC实例的新主机名动态更新主机文件》经验,为你挑选了1个好方法。

sudo在Amazon Web Services上的EC2/VPC上的Ubuntu 14服务器上运行命令时出现以下错误.

sudo: unable to resolve host ip-xxx-xx-x-xx 

我用x替换服务器的私有IP地址.

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

127.0.0.1 ip-xxx-xx-x-xx

现在我没有得到错误.127.0.0.1之后的值解析为hostname命令值.问题是我可能会创建一个AMI并在将来恢复服务器,因此私有IP将会改变.在AWS论坛中,他们建议添加一个脚本,该脚本使用新IP(hostname值)自动更新hosts文件,以便在从AMI还原服务器或自动扩展时使用它.

如何使用hostname值更新hosts文件,因此我不需要担心将来出现的任何问题?



1> jweyrich..:

如果您出于某种原因无法DNS hostnames在您的VPC上启用,那么您应该完全按照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

注意:这将覆盖整个hosts文件,因此请确保在那里写下您需要的所有内容.

根据AWS文档,local-hostname将返回类似的内容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(见这里和这里).不要忘记给脚本执行权限.

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