是否有一个系统文件权威地告诉我主机是否是Amazon AWS EC2实例?
奖励点:没有安装任何新东西,是否有一个命令可以告诉我一些EC2实例的基本参数?
上下文: ~~~~~~~~ 我有一个收集信息的脚本 如果我在EC2实例上运行脚本,则某些“标准”命令不可用, 例如:dmidecode(这几乎没有给我任何东西),或者说virt-what。
我知道/ usr / bin / ec2-describe-instances,或wget for metadata script,或wget 对于元数据报告的单个组件,但我不想安装任何东西 新的,我需要工具来描述主机本身(因为脚本在本地运行), 不要查询另一个主机,或传递一个我必须从另一个脚本获取的密钥 我必须先安装。 也许wget的特定元数据信息是我可以使用的最好的工具?
由于
答案 0 :(得分:4)
我不能保证这对任何其他AMI都有效,而不是Ubuntu 12.04(我使用的是ami-8e987ef9) - 请自己测试一下。
如果您确实希望避免从 magic IP 169.254.169.254
和@Rico建议的元数据中获取此信息,您可能需要查看以下内容:
### Datasource EC2
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/instance/datasource
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/data/previous-datasource
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2
### Hostname
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/data/previous-hostname
ip-10-33-59-70
### Instance ID
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/data/previous-instance-id
i-280ace69
### Instance ID also (check out instance symlink)
ubuntu@ip-10-33-59-70:/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
可能会为您提供所需的信息。
我宁愿建议使用带有元数据的 magic IP 。
在Ubuntu 12.04上还有/usr/bin/ec2metadata
,一个用Python编写的实用程序实际查询169.254.169.254
。
答案 1 :(得分:3)
只需使用查询元数据的标准方式
curl http://169.254.169.254/latest/meta-data/instance-id
有关所有元数据选项的列表:
curl http://169.254.169.254/latest/meta-data/
如果你得到的不是'200',那就意味着它不是EC2实例。
答案 2 :(得分:0)
来自文档:
[ec2-user ~]$ cat /sys/hypervisor/uuid
对于HVM:
[ec2-user ~]$ sudo dmidecode --string system-uuid
[ec2-user ~]$ sudo cat /sys/devices/virtual/dmi/id/product_uuid
如果字符串以" ec2"开头?或者" EC2",操作系统在EC2实例上运行。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/identify_ec2_instances.html