如何通过Jenkins构建在AWS上运行MongoDB脚本
在Jenkins中配置AWS EC2上MongoDB脚本的构建前后执行流程
一、确保Jenkins能访问目标AWS EC2实例
- 生成SSH密钥对:在Jenkins服务器上执行
ssh-keygen -t rsa,一路回车生成密钥(默认路径~/.ssh/id_rsa和~/.ssh/id_rsa.pub) - 把公钥传到EC2实例:将
id_rsa.pub的内容追加到EC2实例的~/.ssh/authorized_keys文件中,确保权限正确(执行chmod 600 ~/.ssh/authorized_keys和chmod 700 ~/.ssh) - 测试连接:在Jenkins服务器上执行
ssh ec2-user@<EC2实例公网IP>,确认能免密登录
二、安装Jenkins必备插件
进入Jenkins的「Manage Jenkins」->「Plugins」->「Available plugins」,搜索并安装:
- SSH plugin:用于远程连接EC2执行脚本
- AWS Credentials plugin(可选):如果需要用IAM凭证替代SSH密钥,可安装此插件管理AWS权限
三、配置Jenkins远程SSH服务器
- 进入「Manage Jenkins」->「Configure System」
- 找到「SSH remote hosts」区域,点击「Add」
- 填写信息:
- Name:自定义名称(比如
EC2-Mongo-Server) - Hostname:EC2实例的公网/内网IP
- Username:EC2实例的登录用户名(比如
ec2-user或ubuntu) - Credentials:点击「Add」,选择「SSH Username with private key」,输入用户名,粘贴Jenkins服务器上的私钥(
id_rsa的内容)
- Name:自定义名称(比如
- 点击「Test Connection」,确认连接成功
四、在Freestyle项目中配置构建前后步骤
构建前(备份MongoDB片段)
- 打开你的Jenkins任务,进入「Configure」
- 找到「Build Steps」上方的「Add build step」,选择「Execute shell script on remote host using ssh」
- 在弹出的选项中:
- 选择刚才配置的SSH服务器名称
- 在「Command」中填写执行备份脚本的命令,比如:
/home/ec2-user/mongo-backup.sh - 提前在EC2上给脚本加可执行权限:
chmod +x /home/ec2-user/mongo-backup.sh
构建后(恢复MongoDB片段)
- 在任务配置页,找到「Post-build Actions」,点击「Add post-build action」,选择「Execute shell script on remote host using ssh」
- 选择同一个SSH服务器,在「Command」中填写恢复脚本的命令:
/home/ec2-user/mongo-restore.sh - (可选)如果需要不管构建成功/失败都执行恢复,勾选「Run regardless of build result」
五、Pipeline项目的配置方式(更灵活)
如果用Pipeline任务,可直接编写Jenkinsfile,示例如下:
pipeline { agent any stages { stage('Pre-build: 备份MongoDB片段') { steps { sshPublisher(publishers: [sshPublisherDesc( configName: 'EC2-Mongo-Server', // 对应你配置的SSH服务器名称 transfers: [sshTransfer( execCommand: '/home/ec2-user/mongo-backup.sh' )] )]) } } stage('主构建流程') { steps { // 这里替换成你的实际构建步骤,比如代码编译、部署等 echo '执行主构建任务...' } } } post { always { // 无论构建成功/失败都执行恢复 sshPublisher(publishers: [sshPublisherDesc( configName: 'EC2-Mongo-Server', transfers: [sshTransfer( execCommand: '/home/ec2-user/mongo-restore.sh' )] )]) } } }
注意事项
- 确保EC2实例的安全组允许Jenkins服务器的IP访问SSH端口(默认22)
- MongoDB的运行用户需要有备份、恢复权限,可提前给对应MongoDB用户分配
backup和restore角色 - 脚本路径要和EC2上的实际路径一致,避免路径错误
内容的提问来源于stack exchange,提问作者abi
相关产品推荐
相关产品推荐

