三、批量+自动化运维工具
这里就比较多了,知名的有Puppet、Ansible、Chef、Saltstack这些。
这些在网上的资料也比较多,找比较新版本的官方文档看就好了。python
Puppet和chef是比较早期的工具,受众面也很大,不过这两个工具基于ruby实现,如今要找到熟悉ruby的人来作这块的二次开发可不容易。
而ansible和saltstack则相对新生代一些,目前用户基数增加很快,基于python实现,要找作二次开发的人也相对容易的多。ios
四、集中日志分析工具
在一个服务器比较多的环境下,如何集中的管理和分析、查询日志,已经变成一个比较强的需求了。
想象一下,若是发生了某个错误,你还得一台台机器去翻日志文件,是否是很蛋疼。
在这个需求驱动下,就诞生了一些集中日志分析工具。git
在开源领域,比较知名的就是ELK这一套工具了,涵盖了日志采集、上报、搜索、展示这一类基本需求,如今比较多的上规模的企业都用这个,网上资料也大把。
核心实现机制都是经过一些日志采集代理(相似fiebean)去爬日志文件,将最新的部分提交到采集服务端,后端再对接搜索引擎,能支持很快速、准确的搜索便可。github
有一个国内不怎么知名的Sentry日志收集服务,比较轻量级,自己是Python作的,与各类语言的日志框架作了很是好的集成,能够很方便的集中收集异常日志,并分配给对应的开发人员。
它在github上有10000多个star了,这在DevOps相关的软件里,都是排名很是靠前的了。数据库
五、持续集成/发布工具
我接触的人都是用jekins的,没有用其余的,可能跟我所在的技术圈子有关。后端
集成打包的过程其实通常都比较简单,配好版本库和打包脚本就行。
但发布的过程就比较复杂,有些是全量发布,但也有很是多的IT团队采用增量发布。
这个方面若是想用工具,仍是得先分析清楚现有的发布流程,手工状况下怎么作,哪些能经过自动化工具来完成。安全
六、IaaS集成
最近两年的公有云推广比较迅速,不少新的服务器采购都被导入到云上去了。
如今主流的公有云都提供了比较完备的API,基于这些API也能够作一些针对基础资源的自动化操做,好比游戏行业的快速开服。ruby
DevOps这个概念说实话是比较大的,不仅是人们所理解的CI/CD。其实理解起来有几个要素能够归纳: 自服务、自动化以及持续反馈。我曾经/如今,或者我理解的DevOps实践会包含如下一些内容:服务器
公有/私有云
将基础设施托管到云平台(如AWS),不缺安全性的同时,管理上更加具备伸缩性和高可用性(大部分的知名云平台的可用性仍是比较值得信赖的),还能够下降成本(弹性计算,按需获取),实现自服务(获取资源的周期大大缩短),减小自建服务的压力。架构
自动化配置管理/容器化技术
基础设施管理属于DevOps里面比较重头的一项了。容器技术能够用于管理各个服务,甚至实现微服务架构。而自动化配置管理则是用代码反应基础设施(“基础设施即代码”),好比使用诸如Chef、Puppet、Ansible这样的工具实现基础设施配置管理的自动化。自动化配置管理和容器的一个区别在于,前者用代码封存基础设施的基本配置信息,后者直接封存各个基础设施的应用组件或者说服务,固然它们的应用场景也有差异。
自动化测试/部署
自动化测试和部署,其实主要是为了持续集成/部署的流水线,让咱们代码的每一次提交均可以触发一个成行的测试/部署。自动化测试可能不仅是单元测试级别的测试,可能还包含会模仿实际用户动做的功能测试、回归测试,这时候你就会借助一些BDD测试框架。固然,DevOps不必定要实际编写这些测试,但必定会参与管理这些测试。
持续集成/部署
借助Jenkins、Go.cd等等这样的持续集成工具,搭建本身的流水线。这样的好处就再也不一一赘述。
持续的监控和日志体系
搭建一个持续可靠的监控/日志体系,就是一个反馈和持续检查的机制.
知乎话题:你所在的公司是如何实施DevOps的?