基于Ansible和CodeDeploy的DevOps方案( 二 )


■ 开发、测试、准生产、生产四种环境不健全 , 缺少某些环境;
■ 四种环境的创建方法不一样;
■ 四种环境的代码部署方法不一致(这常见于代码和配置没有分离 , 开发和生产是两个不同的包 , 部署方法肯定也不一样);
■ 没经过开发测试和准生产环境的验证 , 直接上线 。
从上面的分析不难看出 , 企业在实践DevOps的过程中 , 围绕这三条主线或多或少都会遇到一些问题 。 DevOps的落地很难一蹴而就 , 企业需要针对上述分析 , 在一个稳定的框架下不断迭代 , 做到将“DevOps落地”持续DevOps化 。
落地:FIT2CLOUD DevOps解决方案FIT2CLOUD多云管理平台基于统一的框架 , 采用灵活的模块化组合来应对不同企业的不同诉求 , 追求模块级别的重用 , 逐步形成了以云管平台为核心的多元化解决方案体系 。 其中 , 基于FIT2CLOUD多云管理平台的“监控、自动化及DevOps解决方案”便是我们今天所讨论的重点 。
基于Ansible和CodeDeploy的DevOps方案文章插图
图5 FIT2CLOUD DevOps解决方案全流程
如上图所示 , FIT2CLOUD DevOps解决方案涵盖了整个流水线的规范和工具选择 。 从左至右 , 开发人员提交代码到仓库(Git/SVN) , 使用持续集成工具(开源Jenkins)拉取最新代码构建部署包 , 并上传到制品库(开源Nexus/Artifactory)进行保存 。
在Jenkins Job构建的同时 , FIT2CLOUD 多云管理平台提供的Jenkins插件会自动在多云管理平台对应的应用下注册一个新的版本 。 用户可以在多云管理平台进一步执行应用后续部署的相关动作 , 也可以在插件中设置部署操作的自动触发 , 以简化流程 。
在应用的生命周期内 , 多云管理平台会对其持续进行各项指标的监控 , 并基于Grafana提供可视化图表 。 如果应用监控项超过预设指标 , 监控告警模块会发出相关告警信息 。
运维人员在项目维护中 , 可以借助JumpServer开源堡垒机(jumpserver.org)访问应用所在机器的后台 , 进行一系列的运维管理工作 。 多云管理平台会自动将纳管的机器相关信息同步至JumpServer , 并授权给管理人员 。 同时 , 该平台还和JumpServer对接了单点登录 , 用户可在多云管理平台中选择机器一键通过堡垒机登录机器后台 , 这种方式对于运维团队来说更为便捷与安全 。
测试人员可以在Jenkins上使用MeterSphere开源持续测试平台(metersphere.io)所提供的插件将Job与测试用例做关联 , 通过Jenkins触发MeterSphere测试任务 , 以便在各个环境更新后第一时间执行预设的测试用例 , 从而保障系统的稳定与可靠 。
在FIT2CLOUD DevOps解决方案中 , 核心的三个使用场景:
1. 在持续集成CI方面 , 多云管理平台实现与主流CI工具Jenkins的对接 , 进一步管理了Jenkins中的凭据、构建任务、视图等 。 结合多云管理平台自身的组织能力 , 对以上纳管内容进行权限再分配 , 实现对资源更加集中与规范的管理 。
特别是 , 我们提供了用于对接多云管理平台的Jenkins插件 , 即在每次构建任务执行完成后 , 自动在多云管理平台创建新的应用版本 , 可以直接用于应用的部署 。
基于Ansible和CodeDeploy的DevOps方案文章插图
图6 对接Jenkins 配置
基于Ansible和CodeDeploy的DevOps方案文章插图
图7 配置Jenkins Job
2. 在持续部署CD方面 , FIT2CLOUD多云管理平台主要承担环境管理、制品仓库管理、代码部署引擎的职责 。 FIT2CLOUD多云管理平台从应用的角度对主机进行分组管理 , 并完成基础环境配置 。 该平台支持管理Nexus、Nexus3、阿里云OSS、AWS S3、Artifactory等多种制品库 , 主要用来存放需要部署的各个版本的应用部署包 。