今年五月刚结束的Juno OpenStack Summit是半年一度的Openstack盛会,抛去那些迷花渐欲乱人眼的商业活动,我们来看一看本届summit puppet-openstack社区有哪些新的动态,有哪些新的开发计划。

鉴于上次icehouse puppet design summit主要是以core members和active dev member为主的纯技术讨论会议,导致好多感兴趣的用户来听了也不知所以然。

因此,本届summit中又新增一个称为Juno puppet operators meetup的会议,旨在提供一个用户和开发人员相互交流的机会,听取用户的意见和建议,分享部署和运维的经验,吸引了大量的开发者/用户前来参加。

前PTL Dan Bode在Havana Release之后便离开了Puppetlabs,创建了以自己名字命名的咨询公司,开始退居二线,云游世界,因此,这次meetup由puppetlabs的Chris Hoge负责主持。


Topic 1 Who is using Puppet to manage Openstack ?


Chris一开始询问有哪些公司使用了Puppet来管理Openstack,我整理了一下在Etherpad上的记录,如下表所示:


                                      表1 使用puppet管理openstack的公司


公司

系统版本

puppet组件

puppet组件版本
Aptira CentOS 6 puppet_openstack_builder Havana
Catalyst Ubuntu 12.04  puppet openstack modules Havana
CERN Scientific Linux puppet openstack modules Havana
Cisco Ubuntu12/14 puppet_openstack_builder Grizzly/Havana/Icehouse
Comcast Ubuntu puppet openstack modules Essex/Grizzly/Havana
Cybera Ubuntu puppet openstack modules Grizzyly/Havana
despegar.com/decolar.com Ubuntu 12.10 custom modules Folsom
eNovance Ubuntu12.04/14.04
Debian Wheezy
RHEL 6.5
puppet-openstack Grizzly/Havana/Icehouse
GoDaddy CentOS 6 puppet openstack modules Havana
iWeb Ubuntu 12.04 puppet openstack modules Havana
Icehouse for Swift only
 
Mirantis Ubuntu 12.04 CentOS 6.[3-5] puppet openstack modules Folsom/Grizzly/Havana/Icehouse
MIT CSAIL Ubuntu 12.04 puppet openstack modules Havana
Nimag/Camptocamp Ubuntu 12.04 puppet_openstack_builder Havana
Oracle  Solaris 11.2 puppet openstack modules Grizzly                  
Pixelpark AG
 
Fedora 20 puppet openstack modules(except Ceph) Icehouse
Red Hat  RHEL puppet openstack modules  Grizzly/Havana/Icehouse
SCEA Ubuntu 12.04 puppet openstack modules Essex
Sina Ubuntu 12.04 puppet openstack modules Essex/Folsom
Time Warner Cable Ubuntu 12.04/14.04 puppet openstack modules Ubuntu 12.04 for Havana
Ubuntu 14.04 for Icehouse
Unitedstack Centos 6.[4-5] puppet openstack modules and custom modules Folsom/Grizzly/Havana/Icehouse

小结

从上述的数据来看,

1.  puppet-openstack项目虽然起步于Essex版本,但已经得到了广泛的应用;

2.  Puppet openstack modules支持目前绝大数主流的Linux OS系统,大多数公司会选择Ubuntu,其次是RHEL系(RHEL/CentOS/Fedora);

3.  绝大数公司在使用havana stable分支的core openstack modules代码;

4.  使用puppet-openstack模块作为composition layer目前远高于puppet_openstack_builder;

5.  不少公司使用了定制化模块来满足内部业务需求

6. 有两家公司在puppet openstack项目的基础上,开发了用于简化部署的工具:

a. Mriantis的Fuel底层封装了puppet openstack modules(有定制化修改),提供更为方便快捷的部署方式,同时支持Ubuntu和CentOS (是因为RedHat投了Mriantis LOL);

b. RedHat的packstack也是类似的原理,直接使用了upstream的puppet openstack modules,不过只支持自家的RHEL系列 :)

来自Openstack官方的User survey作了关于部署工具的最新数据统计,Puppet在不同的集群规模上(非POC)均排名第一,其次是devstack:

图1  部署工具占有率分布图

Topic 2 How are you using Puppet to manage Openstack?

第二个话题是关于通过何种方式使用Puppet来管理Openstack集群。

大致可以划分为以下5类:

  1. 直接使用upstream的代码,并保持更新
  2. 使用upstream的代码,但只在必要时进行更新
  3. 使用upstream puppet模块和私有的composition layer
  4. 使用未修改的核心模块,但不使用puppet-openstack作为顶层的composition layer
  5. 使用定制化模块和针对特定节点的composition(Cybera)

小结

第1种和第4种方法是比较常见的使用方式。
    第1种方式适合小规模部署或者没有定制化的需求,例如搭建一个poc环境,开发环境,测试环境等等;
    往往在有一定业务需求的情况下,社区的puppet-openstack模块不能满足(必然不能满足,因为这个模块的目的是满足通用性,鼓励大家在此基础上做定制化的修改),会进行二次开发,因此,多数常常会采用第4种方法。例如,我们就使用了puppet-sunfire模块用于替代puppet-openstack模块。

Topic 3 What are your experiences ?

第三个话题是分享关于使用Puppet部署Openstack遇到的困难和经验。

第一个问题是关于puppet module升级的流程:由于每个节点的数据存储在hiera/ENC中,当升级puppet modules时,那么用户如何知道哪些参数将会变更,哪些参数需要进行调整。
       这里引申出如何管理弃用参数,当前对于涉及到参数名称的变更时,会要求提交者有完善的逻辑对其进行处理,若用户用到了弃用参数,会调用warning函数发出弃用警告信息,但仍然有效。
       会议上约定了两条准则:
             -  弃用参数应该在README或者Release中说明
             -  注明参数最终会在何时被移除

关于是否最终删除这些废弃的参数,一些开发者认为尽可能地保留这些参数,以保证向前兼容。

2. 代码审查应该快速有效

问题1:有些开发者认为社区的代码审查太慢了,拖得太久,主要是puppet-openstack社区不像其他社区那么单一:
           首先多达十几个项目,从puppet-nova,puppet-keystone,puppet-heat模块到puppet-designate,puppet-ceph等,需要代码审查者熟练掌握Openstack每个项目的组件和配置;
           其次代码审查这还需要花费时间去验证和部署这些代码;
           代码逻辑会有争论;

问题2: 有些提交了的变更需要改进,但是原作者可能去做其他事情了。
                    这个问题挺常见的,原作者提交完之后就神龙不见神尾,core dev们其实对于这种按其他人提出的修改要求再提交个patchset随手把task结了的事是乐意的,但是怕侮辱了原作者(but don't want to step on toes of original submitter)。如果你认为可以帮你修改,就在commit信息里留言。 老外的心灵都是这么脆弱的么...

3. 跨多节点的orchestration是个痛苦
        
         例如,版本升级,swift ringsync操作等等。
    
       4. 核心基础模块已经比较完善了,但是它们所依赖的模块比如Corrosync/Packmaker仍需大量的工作,有些独立的模块开发进度太慢
       5. 大多数人都是从git获取这些module,而非Forge
              -  从stable分支拉取
              -  通用的对于稳定分支打补丁的策略
                   -  如果仅是针对当前版本,只提交到master分支,如果影响到先前的稳定分支,那么做backport。目前,大多数的提交都backport到了以前的稳定分支。
                   -  如果你不确定,代码审查者会提醒你的
       6. 某一个新变更导致stable分支无法正常工作
               - 用CI来避免
               - 添加新的builder来改进

7. 包管理  
              有一般的开发者/用户选择自己打包,另一半使用Rethat/Canonical官方源提供的包
              那么是否可以在puppet modules里使用类似UID的方式来管理这些包。

Topic 4 What is missing from Puppet for Openstack? What do you want to see?

1. 初学者如何入门用puppet部署Openstack

入门手册马上就要出炉了,各位耐心等待。

2. 缺少Trove module
          
           Emilien正在为此努力,第一版已经在会后发布了。

3. 完善bug追踪管理
          
           有许多bugfix没有在launchpad上记录
 
    4.  将一些部署测试和集成测试作为gate check的一部分

- 每个模块的rspec测试并不能满足发现类似于“neutron module测试没通过是因为nova module的变更引起”的错误
        - 需要借助类似于packstack或者puppet_openstack_builder的工具来构建多OS的测试环境

5. 我们如何使用Puppet将线上环境从H版升级到I版本?

这个问题产生了比较多的讨论,有些开发者认为这个并不能单单靠puppet来完成,puppet能做的是包的升级,配置文件的变更,服务的启停,数据库表结构的更新等,多于节点间的变更顺序需要借助orchestration工具来做。对于如何升级的文档,首先Openstack各项目就没有明确的文档,所以puppet-openstack社区来做这事情需要从头开始,目前缺乏有效的工具,工作流程和实战经验了。并且不同的部署架构决定了不同的变更流程。我总结一下,目前还没有现成的工具来做到自动化地完成大版本的升级。不过有开发者表示开始着手研究基于puppet来完成Openstack大版本升级的解决方案了。
        
      6. Launchpad blueprint 将会被puppet-specs替代  
      7. 在同个puppetmaster上使用不同版本的puppet modules 
        已经有人开始做这个事了:
         
      http://docs.puppetlabs.com/puppet/latest/reference/environments.html

https://github.com/adrienthebo/r10k

End

本次puppet用户组会议的小结到此结束,用户组会议对于参与的双方来说都是受益匪浅:用户提出了自己的迫切需求和实际部署时遇到的困难,开发者们掌握了用户的确切需求,在定制下一个里程碑时就会有所着重,有针对性地开发新特性,修复bug, 对逻辑进行重构优化等等。

本次会上所收集到的几个重点需求将会在puppet-openstack developer design summmit中进行讨论,我会在下一篇博文中详细说明puppet-openstack社区在Juno release中的主要方向和工作重心。

Juno Puppet Opertaors Meetup小结的更多相关文章

  1. Puppet Openstack Mitaka Design Summit小结

    Puppet Openstack Design Summit小结 经过Puppet Openstack社区的不断努力,Puppet Openstack社区目前提供的Official Modules已经 ...

  2. NCC Meetup 2018 Shanghai 活动小结(含PPT与视频)

    NCC Meetup 2018 上海的活动于2018年6月30日在微软上海港汇办公室进行.原本计划30人规模的小型活动,结果收到了逾60人的报名,其中大部均来到现场参加了活动. 本次活动得到了微软公司 ...

  3. puppet的使用:依赖关系整理

    title: date: 2016-05-08 21:45:33 tags: puppet categories: 技术 puppet中的依赖关系整理. 概述 puppet中的依赖关系大概有如下几个: ...

  4. [openStack]使用Fuel安装OpenStack juno的fuel_master

    安装OpenStack是一件很复杂的事情,特别是在想目中,如果一个组件一个组件,一台一台的coding部署,估计太消耗时间,而且出错的概率很高,所以使用工具推送部署的效率就很高了,而且必须得可靠.mi ...

  5. Centos7 install Openstack Juno (RDO) (转载)

    原文地址:http://www.hdume.com/centos-7-0%E5%AE%89%E8%A3%85openstack/ 1.安装系统,Centos7镜像采用CentOS-7.0-1406-x ...

  6. Centos7+puppet+foreman,实现部署OS

    一.简介 1. 需要实现操作系统的部署 foreman提供了一个基于kickstart的部署工具,输入一台服务器的部署网卡的mac地址和hostname.ip等信息,就能自动的帮我们部署完,并且,还可 ...

  7. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  8. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  9. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

随机推荐

  1. python 全栈开发,Day65(MySQL练习题,参考答案)

    一.MySQL练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号.ps:针对的是自己的生物成绩比物理成绩高,再 ...

  2. kafka删除topic数据

    一.概述 生产环境中,有一个topic的数据量非常大.这些数据不是非常重要,需要定期清理. 要求:默认保持24小时,某些topic 需要保留2小时或者6小时 二.清除方式 主要有3个: 1. 基于时间 ...

  3. Asp.NetMVC和WebForm的请求生命周期

    1.MVC的执行过程 用户  ---->控制器--->ViewData进行传值--->视图(进行显示) 2.Controller中的Action 主要进行的作用: 1.处理用户的请求 ...

  4. json转成java对象

    avro生成的代码里,String是CharSequence,不能通过Gson反序列化,于是有了下面的代码,ParseArray里还不完善: static <T> List<T> ...

  5. 文档工具GitBook使用

    一.登陆注册 地址:https://www.gitbook.com/ 1.gitbook可使用github账号登录,如果已经注册github可以直接使用github账号登录 2.如果是github账号 ...

  6. 通过工具SecureCRTPortable将项目部署到服务器上

    1.将项目打包 2.打开工具连接指定的ip 下面是一些命令 tab键可以有一些提示功能 ls 查看服务器当前目录 lls 查看硬盘当前目录 其实就是linux系统命令 ,服务器是正常命令  ,操作本电 ...

  7. 【noip模拟赛5】任务分配 降维dp

    描述 现有n个任务,要交给A和B完成.每个任务给A或给B完成,所需的时间分别为ai和bi.问他们完成所有的任务至少要多少时间. 输入 第一行一个正整数n,表示有n个任务.接下来有n行,每行两个正整数a ...

  8. MySQL+Toad for Mysql安装,配置及导入中文数据解决乱码等问题

    1.下载MySQL5.7版本,安装官网上的windows安装版,下载地址为:https://dev.mysql.com/downloads/windows/installer/5.7.html 安装选 ...

  9. 缓存击穿、缓存失效及热点key的解决方案

    分布式缓存是网站服务端经常用到的一种技术,在读多写少的业务场景中,通过使用缓存可以有效地支撑高并发的访问量,对后端的数据库等数据源做到很好地保护.现在市面上有很多分布式缓存,比如Redis.Memca ...

  10. Flutter开发环境(Window)配置及踩坑记录

    Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生 UI 的移动 SDK.Flutter 兼容现有的代码,免费且开源,在全球开发者中广泛被使用. F ...