簡體   English   中英

通過腳本創建迭代的AWS AMI,以在Jenkins中使用

[英]Create iterative AWS AMIs via script for use in Jenkins

我正在編寫Jenkins Pipeline作業,該作業會將Jenkins備份到AWS AMI,然后更新插件。 我可以毫不費力地創建AMI,但理想情況下,我想存儲一個上限的數字,一次刪除三個舊的。

這是一個兩方面的問題。

  1. 是否可以通過Groovy捕獲和分類AMI (或可以集成到Groovy中的shell腳本。)我們存儲了數十個AMI,因此我需要能夠僅篩選以某種方式命名的AMI,然后按日期和版本號對其進行排序。 我正在想象一個類似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"

您可以通過為ec2:describeImages提供過濾器來對AMI進行排序。
在您的示例中,您可能會按名稱進行過濾,然后按日期對它們進行排序(我沒有將其放在名稱中,因為createdDate已經是一個屬性),創建最新的快照,然后刪除ami 最舊的快照 您可能要在刪除快照之前用ami id標記快照,以便在設法刪除快照之前被打擾時可以對其進行清理,因為如果ami存在,則無法刪除快照,並且不會刪除快照顯示與AMI的關系(如果已消失)。

我不知道如何從jenkins的groovy中做到這一點,但是必須有某種執行ec2命令的方法,如果不是groovy,也許是Java sdk。 或者,如果您願意,可以在lambda中實現它,然后調用lambda,這樣更好。 如果您想要在其他時間使用快照或除更新前快照以外的其他系統使用快照,那將很有吸引力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM