2016-12-15 75 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