AWS ec2实例审核

时间:2018-04-17 18:49:50

标签: python amazon-web-services amazon-ec2

我正在尝试审核我在AWS上托管的小型DC。 dc包含DEV和PROD环境,其中包含大量运行Java应用程序的实例。我需要对实例及其运行情况进行审核。即os版本,java版本等。

考虑使用python + boto3,不确定在这种情况下我能用boto3做多少。或者是ansible。我需要动态地插入这个盒子里,所以我在想这个问题。

任何提示,想法将不胜感激

1 个答案:

答案 0 :(得分:0)

你可以在boto3中执行此操作,调用describe-instance获取所有实例及其私有DNS地址的dict,然后使用fabric之类的东西转到每个框并轮询但是你想要轮询。你可以使用ansible,坦率地说,这可能是长期的最佳答案,但你需要设置它。所以问题就变成了你正在做的事情,或者你真的需要在这里建立更多的结构吗?

如果是我并且需要快速完成,我只需使用一个简单的bash one liner调用aws cli来获取实例id和私有dns条目,然后将其传递给while循环以检查主机:

aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query 'Reservations[*].Instances[*].[InstanceId, PrivateDnsName]' --output text | while read line ; do echo "=== ${line} ===; prvt_add="$(echo ${line}| awk {'print $2'})"; ssh user@${prvt_add} "echo 'do something' "; echo -e "\n\n";  done

它很难看,但它也很快。我想我花了5分钟把它扔在一起。您可能希望在此处为ssh调用添加StrictHostKeyChecking,BatchMode和Timeout选项,但我会将其留给您。

以下是描述实例的aws cli页面,它将显示您可以在此处使用的信息 https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html