如何利用 Jenkins 结合 Ansible 插件实现混合云架构下老旧非容器化业务的批量自动化部署

夜婷姑娘_3876

夜婷姑娘_3876

2026-05-27

1010人浏览

原创

jenkins结合ansible实现老旧非容器化业务批量部署,关键在于绕过容器依赖、适配异构环境、保障幂等性与可追溯性;通过动态inventory管理混合云主机、定制python解释器与模块、分阶段pipeline(校验、同步、启停、探针)及安全审计强化,支撑物理机/vm/私有云等老旧系统自动化部署。

如何利用 jenkins 结合 ansible 插件实现混合云架构下老旧非容器化业务的批量自动化部署

Jenkins 结合 Ansible 插件实现混合云下老旧非容器化业务的批量自动化部署,关键在于绕过容器依赖、适配异构环境、保障幂等性与可追溯性。老旧系统通常运行在物理机、VM 或私有云(如 OpenStack、VMware)上,操作系统版本陈旧、SSH 服务受限、无 systemd 或 Python 版本偏低——Ansible 的无代理特性与 Jenkins 的调度能力正好互补。

环境适配:让 Ansible 在老旧节点上“跑起来”

老旧服务器常见问题包括:Python 2.6/2.4、无 pip、无 sudo 权限、SSH 禁用密码登录但又不支持密钥免密。需针对性处理:

  • 使用 ansible_python_interpreter 指向兼容解释器(如 /usr/bin/python2.6),避免模块执行失败
  • 在 Playbook 开头添加 gather_facts: false 和 fact_path: /dev/null,跳过对老旧系统不友好的 fact 收集
  • 若目标机无 SSH 密钥认证能力,改用 sshpass + password-based auth(仅限内网可信环境),并在 Jenkins 凭据中安全存储密码
  • 对 CentOS 5/RHEL 5 类系统,禁用 systemd 相关模块,改用 service 模块配合 init.d 脚本控制服务启停

混合云主机清单统一管理

不同云环境(阿里云 ECS、AWS EC2、本地 VMware、IDC 物理机)IP 动态变化大,不能硬编码 /etc/ansible/hosts。推荐方案:

Jenkins
Jenkins

通过 REST API 与 Jenkins CI/CD 服务器交互。适用于触发构建、查询状态、查看控制台输出、管理任务或监控 Jenkins...

下载
  • 使用 动态 Inventory 脚本:为各云平台编写 Python 脚本(如 aliyun.py、vmware_inventory.py),通过 API 拉取实时资产,输出 JSON 格式主机列表
  • Jenkins Pipeline 中通过 inventory: './inventory/aliyun.py' 直接调用,支持传参过滤标签(如 --host-type=legacy-web)
  • 对静态老旧节点,用 分组+变量文件 隔离差异:group_vars/legacy-rhel5.yml 定义专属路径、用户、启动命令;host_vars/10.1.2.3.yml 补充单机配置

Jenkins 流水线设计:面向非容器化业务的关键阶段

老旧业务常为 Java WAR、PHP 单体、Shell 启动的 C++ 服务,部署逻辑重在文件替换、权限修复、进程守护。Pipeline 应聚焦以下环节:

  • Stage: Validate Legacy Env —— 执行 ad-hoc 命令校验目标机基础状态(如 free -m | awk '$1=="Mem:" {print $2}' > 512)、端口占用、目录可写性
  • Stage: Sync Binaries & Configs —— 使用 copy 模块传输 WAR/JAR/INI 文件;用 template 模块渲染配置(如将 db.host 替换为当前环境对应地址)
  • Stage: Graceful Stop & Start —— 避免 kill -9:先发自定义 stop.sh,等待 30 秒后检查进程消失;再用 shell 模块启动,配合 nohup + cronolog 日志轮转
  • Stage: Smoke Test —— 调用简单 HTTP 探针(curl -f http://localhost:8080/health)或 Telnet 端口连通性,失败则自动回滚前一版文件

安全与审计强化(针对老旧系统风险)

老旧环境往往缺乏日志集中、权限收敛和变更审计能力,Jenkins+Ansible 可补位:

  • 所有 Playbook 执行强制启用 log_path: /var/log/ansible-legacy-deploy.log,并由 Jenkins 归档到 ELK 或 S3
  • 在 Jenkinsfile 中注入 extra_vars: "deploy_user=${env.BUILD_USER_ID} deploy_time=${env.BUILD_TIMESTAMP}",确保每次部署带人、带时间戳
  • 敏感操作(如数据库脚本执行、配置覆盖)加 when: ansible_env.USER == 'jenkins' 锁定执行上下文,防止本地误运行
  • 对金融、政务类老旧系统,启用 Ansible 的 --diff 和 --check 模式做预演,并在 Jenkins 控制台输出变更预览(如哪些配置行将被修改)

相关专题

更多
Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

259

16

轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.27

482

3

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.13

2924

9

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

11739

12

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

3087

9

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

5257

10

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

1525

12

云服务器是什么
云服务器是什么

云服务器是一种在云计算环境中提供的虚拟服务器,它具有弹性、可扩展性和按需付费等特点。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.06.21

9276

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习