我们使用Ansible来配置ec2实例,在它们上部署我们的应用程序,然后基于该实例创建AMI,更新启动配置,以便自动缩放组始终启动应用程序的新版本。
我们将大部分ansible的剧本重用于不同的应用程序(差异实例大小,家庭等)。 其中一个任务是检查实例元数据以确定是否存在任何临时设备,如果存在,则挂载它们并将它们保存在/ etc / fstab和cloud-config中。
我们遇到了与3年前在此主题中所描述的类似的实例元数据的问题: https://forums.aws.amazon.com/thread.jspa?messageID=489889
现在我们正在使用t2.large实例进行一些测试,如你所知,这个实例只是ebs,但是当我们卷曲实例元数据时,我们得到了2个临时磁盘:
ubuntu@ip-xxx-xxx-xxx-xxx:~$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ebs1
ebs2
ephemeral0
ephemeral1
任何想法?
答案 0 :(得分:0)
如果这是亚马逊团队无法解决的已知问题,您可以解决它。
检查实际存在的快速脚本:
#!/bin/bash
for MAPID in $(curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/); do
BLKDEV=$(curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/$MAPID/ | sed 's#^/dev/##' | sed 's/^sd/xvd/')
if blkid | grep -q $BLKDEV; then
echo $BLKDEV present
else
echo $BLKDEV not present
fi
done
使用c1.medium
和t2.medium
进行检查。 t2
输出:
$ curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ebs1
ephemeral0
ephemeral1
root
$ ./test.sh
xvda1 present
xvdd present
xvdb not present
xvdc not present
xvda1 present