娜尼的妮妮

导航

Jenkins+AWS 自动启停 start/stop

最近申请了一台AWS server,需要在jenkins上配置on demand start/stop, 实现启用时instance 开启 ,空闲时instance stop. 因为这台AWS 机器会有按使用时长收费的部分。

step1: jenkins master 上安装slave setupplugin(最新的插件改为Agent Setup)

 

 step2: jenkins Node 上面配置:Start and stop this node on-demand

 

 

Step3: 在jenkins master server 上安装aws cli

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

 

step4: 重点来了,需要从AWS admin端创建一个OS user,并且赋予start/stop 权限,生成AWS_ACCESS_KEY_ID  和AWS_SECRET_ACCESS_KEY。这部分由于AWS 机器admin是运维team,我没有权限,也不知道如何操作,应该是在后台上generate key和ID就好。我在jenkins上配置的自动启停,加上后面的第5步都成功了,但就是报没有权限,就是因为我没有这两个参数。

 

step5: 在jenkins master机器上aws configure ,按照提示输入第4步生成的ID和key,还有region的信息

aws configure list信息如下,否则看到的都是<not set>

 

step6: 编写start和stop 脚本放在master 目录,在jenkins上调用,如step2 截图所示。

start和stop 脚本的核心就是aws的两条命令,官方文档上有

 

/data/home/jenkins/.local/bin/aws ec2 stop-instances--instance-ids <instance-ID> --region ap-south-1

/data/home/jenkins/.local/bin/aws ec2 start-instances--instance-ids  <instance-ID>  --region ap-south-1

 

最后的结果这样 就表示成功了 

 

 

可能遇到的error

SSL validation failed for https://ec2.ap-south-1.amazonaws.com/ EOF occurred in violation of protocol (_ssl.c:1056)

查下来是我的jenkins master 机器使用了代理,在执行aws instance 操作的时候需要手动把http/https proxy export到环境变量中。 

posted on 2021-11-16 17:37  娜尼的妮妮  阅读(172)  评论(0编辑  收藏  举报