本文摘抄自:DevOps的概念与实践 

目录

Chef/Puppet 只是DevOps工具链中的可选工具

仅靠Chef/Puppet本身无法实现Full-Stack部署自动化

两种实现方式

基于PaaS的实现方式 (以Cloud Foundry为例)

Netflix的实现方式


DevOps不仅仅是工具

DevOps是Agile的延伸,Agile依靠Dev & Biz部门紧密协作,通过增量交付的方式来解决需求多变的难题。DevOps则进一步延伸到IT运维,通过Dev & Ops的紧密协作提高软件交付的质量和频率。 人的重要性大于流程,流程的重要性大于工具。 这个结论适应于Agile,也适用于DevOps。 工具带来的影响是短期的、片面的,流程和人产生的影响是长期而全面的。

Chef/Puppet 只是DevOps工具链中的可选工具

DevOps的目的是打造标准化的、可重复的、完全自动化的Delivery Pipeline,其范围涵盖需求、设计、开发、构建、部署、测试、发布。除了需求、设计和开发,其他都是可以自动化的,自动化是提高可测试性、一致性、稳定性和交付频率的核心。

DevOps流程所需要用到的工具和环境有:

  1. 源代码版本控制工具: SVN、Git等

  2. 持续集成工具: Jenkins、 Bambo等

  3. Artifact存储仓库:持续集成构建后的artifact 都统一放在一个仓库中,比如Nexus/Artifactory,也可以是FTP、S3等

  4. 配置和部署工具:Chef/Puppet/CFEngine, Fabric/ControlTier,也包括Docker等

  5. Cloud Provision工具:在云环境下,由于任何IT Infra资源都以编程接口提供,意味着Full-Stack Automation成为了可能。Cloud Provision工具可以自己通过API构建,也可以直接使用IaaS服务商提供的扩展服务,也可以使用第三方工具,相当一部分 ,Cloud Provision本身也集成了Chef/Puppet来实现后续的部署和配置。

  6. 测试工具:传统测试工具,模拟Infra灾难、验证系统健壮性的工具,如Netflix的Chao Monkey

  7. 发布工具:一般情况下,需要DTAP四个环境:开发、测试、Staging、生产。每种环境的作用、部署方式、代码版本等是不一样的。

  8. 云基础设施:包括AWS/Azure等公有云,CLoudstack/OpenStack等私有云

仅靠Chef/Puppet本身无法实现Full-Stack部署自动化

如果要实现Full-Stack Automation,需要实现环境创建自动化、软件安装和配置自动化、应用部署和配置自动化、监控和告警自动化、故障检测和恢复自动化、扩展自动化。

  1. 环境创建:创建VMs、网络、存储、负载均衡,协调不同角色VMs的创建过程和配置

  2. 软件安装和配置:操作系统配置,基础软件安装和配置,这些软件的特点是变动不频繁。对Chef/Puppet来说,这个步骤的自动化是最擅长的,提供大量现成的Recipes,并抽象各种异构系统之间的差异

  3. 应用部署和配置:部署应用代码,这部分代码的变动是频繁的。另外,对于复杂的系统来说,如果保证升级期间系统的可用性,系统的各个应用组件需尽量是无状态和松耦合的。如果系统的组件之间是有依赖的,那么升级期间必须动态地协调、控制好相关组件的行为。

  4. 监控和告警:包括OS级别和应用级别的可用性和性能监控。如果发现异常,需要能够自动发出告警信息。

  5. 健康检查和恢复:为了应付云基础设施故障,系统需要Design By Failure。在异常发生时,系统可以发现并进行自动处理。

  6. 自动伸缩:一般情况下,业务存在高峰期和低估期。为了节约成本,系统应该是可以自动伸缩的。

每一步都有工具来实现自动化,但实现Full-Stack 部署自动化不是通过简单的拼凑工具就可以的。

两种实现方式

基于PaaS的实现方式 (以Cloud Foundry为例)

  1. 环境创建:用户不需要创建物理资源环境,Cloud Foundry 会自动创建并分配资源给各个租户,用户无法控制底层OS等
  2. 软件安装和配置:用户不需要软件安装,Cloud Foundry已经安装好相关软件,但支持的类型和版本有限。
  3. 应用部署和配置:Cloud Foundry提供接口,用户调用接口进行应用部署和配置。应用类型必须是Cloud Foundry支持的,只能进行有限的配置,如Tomcat的配置参数等
  4. 监控和告警:Cloud Foundry提供监控服务,但Metric类型有限,无法支持自定义Metric
  5. 健康监测和恢复:Cloud Foundry 提供Container级别的健康监测和恢复
  6. 自动伸缩:基于Cloud Foundry提供的monitoring接口和应用控制接口,可以实现instance级别的自动伸缩

Cloud Foundry基本实现了所有自动化步骤,应用开发人员只需专注应用逻辑本身的开发,但Cloud Foundry也限制了用户的选择权和控制权,特别是大型的、复杂的、分布式系统,开发人员需要的是Full-Stack可控制性

Netflix的实现方式

  1. 环境创建:通过自己研发的Asgard管理和部署工具实现
  2. 软件安装和配置:基础软件和配置都打包成AMI,基于Netflix自己的打包工具Aminator
  3. 应用部署和配置:同上,应用代码和配置也打包进AMI
  4. 监控和告警:Leverage AWS Cloudwatch, 同时也将通过自己开发的Servo Lib将custom metric发送至Cloudwatch
  5. 健康监测和恢复:Leverage Atoscaling group, 健壮性测试有Netflix自己开发的Chaos Monkey工具
  6. 自动伸缩:Leverage AWS AutoScaling group

Netflix除了Leverage AWS的CloudWatch/Auto Scaling Group/ ELB等服务外,自己也开发了一系列工具完成Full-Stack部署自动化。这些工具通过Asgard这个可视化云管理和部署控制台集成起来。 另外,Deployable image这种部署模式虽可简化部署并确保一致性,但一部分复杂性转移到了应用层面。系统的各个组件是无状态和松耦合,同时还需要Eureka这种服务来实现中间层的负载和failover。

Cloud Foundry和Netflix都没有用到Chef/Puppet。

DevOps--Chef/Puppet相关推荐

  1. 运维管理工具+chef+puppet+ansible+SaltStack

    运维管理工具+chef+puppet+ansible+SaltStack Puppet.Chef.Ansible和SaltStack让用户极容易配置和维护数十台.数百台.乃至数千台服务器.这倒不是说小 ...

  2. 最佳DevOps工具获奖者:CloudBees Jenkins平台

    最新一期<IT新架构>宣布了第三届影响力奖的最终结果.这些获奖的产品和技术由我们读者.行业专家和编辑人员参与投票评选,并且预计将对2016年的IT运营产生显著影响.首先向所有的获胜者表示祝 ...

  3. DevOps的前世今生

    2019独角兽企业重金招聘Python工程师标准>>> 目前在国外,互联网巨头如Google.Facebook.Amazon.LinkedIn.Netflix.Airbnb,传统软件 ...

  4. DevOps平台中的自动化部署框架设计

    本文目录: 一.背景 二.我们的需求是什么? 三.概念澄清 四.概念模型 五.总体设计 六.关键点设计 七.总结 一.背景 说到自动化部署,大家肯定都会想到一些配置管理工具,像ansible,chef ...

  5. 从技术雷达看DevOps的十年 – 基础设施即代码和云计算

    在上一篇文章中,我们讲到了 DevOps 和持续交付的关系.本篇将回顾最先改变运维工作的相关技术 -- 基础设施即代码和云计算,通过技术雷达上相关条目的变动来跟踪其趋势变化. 和持续交付一样,基础设施 ...

  6. 容器时代的DevOps部署

    转载本文需注明出处:微信公众号EAWorld,违者必究. 本文目录: 一.企业应用的部署发展 二.普元容器云与DevOps的部署设计 三.面向微服务的部署设计 四.容器组装化部署 五.容器云集成之路 ...

  7. 性能测试之Devops相关

    目录 1. 什么是Devops 1.1 定义 1.2 核心思想 1.3 主要特点 2. Devops的价值 3. Devops的技术栈与工具链 4. Devops落地实现 5. Devops与敏捷 [ ...

  8. DevOps专题|Packer使用教程

    什么是Packer 简单介绍一下自己 Packer 是一个轻量命令行工具, 能在几乎所有主流的操作系统上运行. 在给定一份配置文件的情况下, Packer 能为多种系统架构创建云主机镜像.同时 Pac ...

  9. Elasticsearch Top 51 重中之重面试题及答案

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 铭毅天下 来源 | https://mp.we ...

  10. 苏宁海量服务器自动化配置运维实践

    运维的演进 人力运维阶段 在IT产业的早期,服务器运维是通过各种Ad Hoc命令或者Shell脚本来完成基础设施的自动化工作,这种方式对于简单,一次性的工作很方便,但是对于复杂和长期的项目,后期的脚本 ...

最新文章

  1. python程序员总结的一些基本语法
  2. [译][python]ImportError:attempted relative import with no known parent package
  3. win7系统启动到一半停止_win7系统启动一半死机的解决方法
  4. 分区式存储管理算法实现_穿梭式自动化立体库的种类和特点有哪些?
  5. 一个深度学习痴呆选手对AlexNet网络架构的一些理解
  6. icmp协议_CCNA - Part7:网络层 - ICMP 应该是你最熟悉的协议了
  7. esxi5.1 添加vSwitch,转VM network to new vSwitch
  8. 关于简历:怎样才叫熟悉/精通Linux?
  9. Azure 中 Windows 虚拟机的大小
  10. lua redisson执行lua脚本
  11. 中文 NLP(5) -- 宾州树《汉语词性标注规范》
  12. 漏洞修复:Cache Management: Insecure Policy
  13. java facet 是什么_eclipse中project facet问题
  14. Cause: org.postgresql.util.PSQLException: 错误: 对于可变字符类型来说,值太长了(255)
  15. 通过阿里云API查询账户余额
  16. CSS-背景图片 | background-image
  17. Apple Pay线上支付的流程和app应用内接入的方法
  18. LeetCode刷题(python)——476. 数字的补数
  19. linux pdf转视频教程,Linux下PDF操作与转换
  20. linux 命令查询主机名,主机名命令,linux查看主机名命令

热门文章

  1. 阿里双十一购物节背后的技术问题
  2. 渣打称中国房市出现泡沫
  3. VS插件——番茄助手快捷键的使用教程
  4. 源代码(二)_尚学堂学习
  5. https安全认证流程简介
  6. 计算机涨跌公式,计算机今日涨跌公式,怎么算 股票的涨跌停板 公式是怎么的?...
  7. GoLang之接口interface
  8. phpstudy 运行PHP项目
  9. 使用Arduino实现一个简易倒车雷达
  10. 不同操作系统图片显示发生颠倒,linux ubuntu win7 win10