基于Ansible和CodeDeploy的DevOps方案

名词解释:
Ansible:由红帽Red Hat开源并主导的自动化运维工具 , 帮助运维实现IT自动化 , 降低人为操作错误 , 提高业务自动化率 , 提升运维工作效率 。 Ansible常用于软件部署自动化、配置自动化、管理自动化、软件平滑升级等 。 它拥有丰富的内置模块 , 并且有开放的API接口、完善的文档体系 , 以及活跃的社区 。
CodeDeploy:是由公有云厂商AWS提出的应用部署规范 , 利用YAML格式 , 清晰的定义应用部署的全生命周期(从DownloadBundle开始到ValidateService结束) 。 AWS实现了基于CodeDeploy规范的公有云服务 , 即AWS CodeDeploy , 提供给AWS客户使用 。
DevOps:DevOps中的Dev指Development , Ops指的是Operations 。 DevOps的目标是打通开发运维的壁垒 , 实现开发运维一体化 。 这也就是说DevOps并不是某个系统或者某个工具 , 更不会等价于某些具体的名词(比如容器、Jenkins) 。
基于Ansible和CodeDeploy的DevOps方案文章插图
图1 DevOps的目标是实现开发运维一体化
背景:DevOps为什么这么火?毋庸置疑 , DevOps已经成为近些年IT行业内最火爆的方向之一 。 众多企业也在积极的学习、实践并落地DevOps 。 本质上来讲 , 由于行业竞争激烈 , 软件正在不断地颠覆传统行业 , 有预测称21世纪所有企业都会是软件企业 。
业务的快速迭代、变更 , 依赖于IT能力的变革与提升 。 DevOps是IT研发、部署、运维能力不断演进的阶段性结果 , 是新的开发模式、新的运维模式共同作用下 , 实现IT赋能业务增长、提升企业竞争力的有效手段 。
基于Ansible和CodeDeploy的DevOps方案文章插图
图2 DevOps异常火爆 , 采纳率超过70% , 且逐年上升
深入理解DevOps后 , 我们会发现DevOps涵盖了整个开发和运维的阶段 , 每个阶段的能力范围和复杂程度都不一样 , 所以落地DevOps也会涉及不同的工具和系统 。
基于Ansible和CodeDeploy的DevOps方案文章插图
图3 DevOps涵盖从代码到上线运维的各个阶段
现实:企业在DevOps实践中常见的问题【基于Ansible和CodeDeploy的DevOps方案】DevOps早已不是一个新鲜的词汇了 。 因为它显而易见的优势 , 过去几年越来越多的企业都在引入DevOps , 希望建立自己的DevOps体系与文化 。 而根据每家企业自身的特点 , 能够顺利地在较短的时间完成转型的公司又非常少 , 更多的企业在建设过程中多少都会遇到一些亟待解决的问题 。 我们总结出了DevOps实践过程中的三条主线 , 下面来一一分析每条主线下企业可能遇到的一些问题 。
基于Ansible和CodeDeploy的DevOps方案文章插图
图4 DevOps(CI/CD)的三条主线
主线1:从代码到制品库
大多数客户实践DevOps的过程中已经可以实现从代码库(Git/SVN)到制品库(Nexus)的持续打包流水线 , 但是仍然还会存在一些经常被忽视的问题 , 例如:
■ 没有建立统一的打包规范;
■ 没有建立统一的制品库;
■ 不同环境(开发、测试、生产)的部署包是不一致的;
■ 部署时不经过制品库(紧急上线 , 或者临时变更) 。
主线2:从制品库到可运行的服务
这一步是DevOps落地实践中挑战最大的 , 即如何快速地将开发人员提交的制品快速部署到相应环境 。 在这一过程中 , 常常遇到的问题包括:
■ 环境创建非常慢;
■ 手工SSH登录初始化服务器;
■ 无统一的应用部署工具;
■ 部署后没有全面的健康检查 。
主线3:从开发环境到生产环境