【问题标题】:have jenkins start an EC2 instance and Terminating it让詹金斯启动一个 EC2 实例并终止它
【发布时间】:2019-01-22 23:27:10
【问题描述】:

我有一个完整的部署作业,它需要一个正在运行的实例的 ip 并在其上部署我的系统。

我目前拥有一个 EC2 实例,用于每晚运行的自动化测试,但该实例很昂贵,我正在寻找一种在测试之前启动它并在测试之后终止它的方法。

我寻找可以提供帮助的 EC2 插件,最接近的插件是 this,但这是用于制作从站,这不是我想要的。

我希望能够启动 EC2 实例,并将其 IP 地址传递给自动化测试作业,然后在完成后终止该实例。

我开始为此制作一个命令行 bash 文件,但这似乎工作量太大,我想也许我缺少一些东西。

【问题讨论】:

  • 为什么不让 jenkins 运行一个 shell 脚本,并在该 shell 脚本中编写运行 EC2 的命令,然后在工作完成后杀死另一个命令?

标签: amazon-web-services jenkins amazon-ec2 jenkins-plugins


【解决方案1】:

您的要求是有效的,亚马逊知道:

当您停止实例时,我们会将其关闭。我们不收取停止实例的使用费或数据传输费用,但我们会收取任何 Amazon EBS 卷的存储费用。

参考:
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html

这里有一些启动/停止实例的方法

Amazon EC2 HTTP API

这是一个 api rest,您可以执行 简单的 http 请求来启动或停止您的实例:

https://ec2.amazonaws.com/?Action=StartInstances&...

https://ec2.amazonaws.com/?Action=StopInstances&...

您可以通过多种方式从 Jenkins 调用此 api:简单的 shell 执行、groovy 和脚本化/声明式、管道。


AWS CLI

更多关于如何使用 aws cli 暂停实例:

您可以通过多种方式从 Jenkins 调用此 api:简单的 shell 执行、groovy 和脚本化/声明式、管道。


AWS 实例调度程序

2018 年,AWS 推出了 AWS Instance Scheduler,这是一种经过改进的全新调度解决方案,使客户能够调度 Amazon EC2 实例。

使用此工具,您可以自动启动和停止 Amazon EC2 和 Amazon RDS 实例。

参考:

使用这种方法,您不需要 Jenkins:b

【讨论】:

  • 好吧,我现在觉得自己很愚蠢。会这样做。感谢您的详细回答。但是在开始运行自动化套件之前,我怎么知道实例实际上已经启动了呢?
  • 没关系.. 发现这个:aws ec2 wait instance-running --instance-ids "i-XXXXXXXX"
  • 不用担心。 aws web 平台中几乎所有的用户界面操作,您都可以使用 http api rest 或 aws cli 来完成。同样有趣的是,开发一个 jenkins 插件来减少更多的这个步骤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 2020-04-23
  • 2017-07-13
  • 2014-09-09
  • 2020-07-14
  • 2017-01-29
相关资源
最近更新 更多