2014-01-29 69 views
2

有没有一个系统文件可以权威地告诉我主机是否是Amazon AWS EC2实例?如何识别Amazon AWS EC2实例?

Bonus point:没有安装任何新东西,是否有一个命令会告诉我一些EC2实例的基本参数?

上下文: ~~~~~~~~ 我有一个收集信息的脚本。
如果我在EC2实例上运行脚本,一些“标准”命令不可用,例如 ,例如:dmidecode(这实际上什么都没有)或virt-what。

我知道/元数据脚本的/ usr/bin/ec2-describe-instances或wget,或者元数据报告的单个组件的wget ,但我不想安装任何东西 新的,我需要描述主机本身的工具(因为脚本在本地运行), 不要询问另一个主机,或者传递一个密钥,我必须从另一个脚本 获得我必须先安装的密钥。 也许wget特定的元数据信息是我可以使用的最佳工具?

感谢

回答

3

只需使用查询元数据

curl http://169.254.169.254/latest/meta-data/instance-id 

对于所有元数据选项列表的标准方式:

curl http://169.254.169.254/latest/meta-data/ 

如果你不是一个“200以外的任何'那么这意味着它不是一个EC2实例。

4

我不能保证这将适用于比Ubuntu 12.04(我正在使用ami-8e987ef9)的任何其他AMI - 请测试自己。

这里是你可能想什么,看看你是否真的以避免让从魔法 IP 169.254.169.254和元数据@Rico这个信息提示:

### Datasource EC2 
[email protected]:~$ cat /var/lib/cloud/instance/datasource 
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2 
[email protected]:~$ cat /var/lib/cloud/data/previous-datasource 
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2 

### Hostname 
[email protected]:~$ cat /var/lib/cloud/data/previous-hostname 
ip-10-33-59-70 

### Instance ID 
[email protected]:~$ cat /var/lib/cloud/data/previous-instance-id 
i-280ace69 

### Instance ID also (check out instance symlink) 
[email protected]:/var/lib/cloud$ ls -al | grep instance 
lrwxrwxrwx 1 root root 22 Jan 29 22:00 instance -> ./instances/i-280ace69 
drwxr-xr-x 3 root root 4096 Jan 29 22:00 instances 

也许东张西望/var/lib/cloud会给你一些你需要的信息,而不需要使用curl

我宁愿建议使用带有元数据的魔术IP

在Ubuntu 12.04上,还有/usr/bin/ec2metadata,一个用Python编写的实用程序,实际上查询的是169.254.169.254