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到环境变量中。