2016-12-15 42 views
0

我正在编写将Jenkins备份到AWS AMI的Jenkins管道作业,然后更新插件。我可以创建AMI没有问题,但理想情况下,我希望存储这些数据的上限,删除最旧的最长保留数,例如,三次。通过脚本创建迭代AWS AMI以在Jenkins中使用

这是一个双管齐下的问题;

  1. 有没有一种方法来捕获和阿美族通过Groovy的排序? (或者可以将shell脚本集成到Groovy中)。我们有几十个AMIs存储,所以我需要能够筛选那些以特定方式命名的名称,然后按日期和版本号对它们进行排序。我想象沿着yyyymmdd_jenkinsbkup_##线的命名系统,其中##是版本号(01,02,等)

  2. 假设是,我可以删除最早的一个并重复到下一个版本号在创建下一个AMI时?说我有以下三个保存

    20161201_jenkinsbkup_08 
    20161204_jenkinsbkup_09 
    20161212_jenkinsbkup_10 
    

    可我后来不知怎的删除20161201_jenkinsbkup_08创造20161215_jenkinsbkup_11

我是一个AWS小白,但走到这一步在我的脚本来创建图像。请注意,这是在更大的管道脚本中运行的。

sh "aws ec2 create-image --instance-id i-############# --name 'something to create the requested format' --region us-east-1 --no-reboot" 

回答

0

您可以通过给ec2:describeImages提供过滤器排序的AMI。
在你的例子中,你可能会按名称过滤,然后按日期对它们进行排序(我没有把它放在名称中,因为createdDate是一个属性),创建最新的快照,然后同时删除ami 和最古老的快照。你可能希望你删除它,所以你可以清理,如果你管理你删除它之前被中断,仿佛AMI存在快照不能被删除之前与AMI ID标记的快照,并不会显示与AMI的关系,如果它消失了。

我不知道该怎么做,在常规的詹金斯,但必须有执行EC2命令,也许是一个Java SDK的,如果不是常规的一些方法。或者如果你想要的话,你可以在lambda中实现它,然后直接调用lambda表达式,如果这样做更好。如果您需要其他时间的快照或除更新前快照以外的其他系统,这将很有吸引力。

+1

仍然与此战斗,但我想给你信誉转向描述图像;谢谢您的帮助! – Alex