【大咖分享】AI 大模型时代,架构师有哪些机遇和挑战? 了解详情
写点什么

Puppet OpenStack 介绍

  • 2019-11-14
  • 本文字数:2146 字

    阅读完需:约 7 分钟

Puppet OpenStack 介绍

OpenStack 本身是一个非常复杂的软件栈,存在大量的服务,每个服务下又细分很多小的服务,每个小服务都是由一个软件包及其多个配置文件组成,手动管理需要消耗大量的人力和时间。PuppetLabs 于 2013 年发起了 Puppet-Openstack 项目,并最终演变成了 OpenStack Offical 项目,对于 Openstack 软件的部署和管理带来了极大的方便。

1 Puppet OpenStack 简介

Puppet-Openstack 项目是由 PuppetLabs 公司于 2013 年发起的开源项目,最初托管在 Github 上,半年后移入 OpenStackCI 体系。最初只有 Keystone,Nova,Glance,Cinder 等几个核心项目的 modules,随后得到了 RedHat,Cisco,Mirantis 等公司的广泛支持,在社区贡献者的持续努力下,Puppet-Openstack 项目从 Stackforge 孵化项目演变成了 OpenStack Offical 项目,目前隶属于 Openstack Goverance 项目。目前已构成了一套庞大而复杂的部署体系。目前 Openstack 最新版本为 15.z.y Train。

2 为什么要选择 Puppet Openstack?

目前用于部署 OpenStack 的工具已非常广泛,为什么要选择它呢?或者说从技术角度来看,OpenStack 自动化部署工具应该如何做技术选型?


1.Puppet-Openstack 项目诞生于 2013 年,诞生时间早,社区参与贡献者众多,使得 Puppet-Openstack 项目非常成熟和稳定,这对于自动化运维来说是十分重要的考虑因素。


2.欧洲原子能机构 CERN 使用 Puppet 管理着世界上规模最为庞大的 OpenStack 集群,总计超过了一万台服务器。这从用户角度证明了 Puppet-Openstack 可以支持大规模 Openstack 集群的部署。


3.目前市场上存在大量的 Openstack 相关的配置管理工具,比如:Ansible、Chef、K8s,下图是基于 2017 年的各配置工具市场占用率。



图中 Fuel 和 Packstack 同样也使用 Puppet openstack 项目,可以看出大多数项目中 Puppet 的占用率,同时我们在实践过程中发现 Puppet 本生非常适合做大规模的集群配置管理,管理接近 4000+ 云服务配置文件、软件迭代、变更发布等工作。

3 Puppet OpenStack 在云计算中的实践

在我们的日常运维工作中,Puppet openstack 包含几乎整个运维周期的配置、服务、软件包的管理,目前有如下项目的服务通过此项目管理:OpenStack 社区 Nova、Neutron、Cinder、Glance、Trove CEPH 社区的块存储 RBD。


下来我们看看 Nova 项目中 puppet 代码结构。


puppet-nova 模块用于配置和管理 Nova 服务,包括服务,软件包,配置文件,flavor,nova,cells 等等。其中 nova,flavor, cell 等资源的管理是使用自定义的 resource type 来实现的。

代码逻辑

1)class nova


数据库、消息队列、日志、SSL 的配置。


2)class nova::keystone::auth


管理 Nova 与 Keystone 相关的认证相关的配置,包含创建用户、密码、 Endpoint 相关。


3)class nova::api


管理 Nova API 服务配置。



  • Nova_config: 通过传参的方式去控制配置文件中参数。

  • Nova_paste_api_ini<| |> ~> Service[‘nova-api’] :当有配置文件更新时,我们会自动触发对应的服务。


4)class nova::conductor


管理 Nova Conductor 服务配置。


nova::generic_service { 'conductor': enabled => $enabled, manage_service => $manage_service, package_name => $::nova::params::conductor_package_name, service_name => $::nova::params::conductor_service_name, ensure_package => $ensure_package, }
复制代码


  • ensure_package:安装 conductor 服务包。

  • manage_service:是否管理服务。

  • package_name :管理 conductor 包名称,即版本号管理


5)class nova::compute


管理计算 VNC 服务配置。


nova_config { 'DEFAULT/vnc_enabled': value => $vnc_enabled; 'DEFAULT/vncserver_proxyclient_address': value => $vncserver_proxyclient_address; 'DEFAULT/vnc_keymap': value => $vnc_keymap; }
复制代码


  • nova_config:通过 create_resource


函数去管理每台计算节点的 VNC 配置。


总结:Puppet-nova 模块中使用的资源整合的配置逻辑,并且通过角色耦合方式对单个服务进行管理,而对于公共服务通过入口文件 nova.pp 进行管理,这种方式组合不仅可以覆盖至每个配置文件参数,增强管理灵活度,也增加了代码可阅读性及松藕性。

数据管理

既然有了逻辑,那数据管理在 Puppet openstack 中是如何做到的呢?首先我们介绍一个 Puppet openstack 组合项目叫做 Hieradata,它是基于键值查询的数据配置工具,Hiera 是一个可选工具,它的目标是:Hiera makes Puppet better by keeping site-specific data out of your manifests 它的出现使得代码逻辑和数据可以分离管理。


Hieradata 树形结构:



我们通过文件名来区分赋值与对应的服务应该使用哪些数据,那他们是怎么在文件中是使用的呢?

compute.yaml 计算服务数据

Puppet-nova 中我们提到过 VNC 配置。



通过直接引用 puppet-nova 中的 common 类下面的变量给代码块中逻辑传输对应值。这样 Puppet 在服务端编译成 Catalog 日志后,发送给客户端转换成 JSON 文件后应用在每台机器上。

4 总结

OpenStack 本身是一个非常复杂的软件栈,大量的配置、每个服务下细分很多小的服务、而每个小服务都一个软件包,人工管理需要消耗大量人力和时间,选择一个适合当前环境的配置管理工具是非常必要的。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/n9MoSTzMSKLbMrEOuZ70YA


2019-11-14 18:36701

评论

发布
暂无评论
发现更多内容

「春」写作平台春节精选话题

InfoQ写作社区官方

InfoQ 牛年特别策划

「新」春节新用户注册福利

InfoQ写作社区官方

InfoQ 牛年特别策划

MyBatis专栏 - 关联查询之一对一

小马哥

Java mybatis 七日更 二月春节不断更

我的2020年学习总结

兆熊

学习 总结

Linux Lab 进阶: 自动化测试

贾献华

Linux 测试 Linux Kenel

第一性原理

熊斌

学习 2月春节不断更

「牛」鲲鹏会海报拜年,福利大放送

InfoQ写作社区官方

InfoQ 牛年特别策划

话题讨论 | 程序员表白,不光需要“技术”,更需要勇气!

孙叫兽

程序员 话题讨论 情人节 表白

填补国内空白!建信金科携手本源量子发布国内首批量子金融算法

金科优源汇

产品 0 期 - 前三周大作业

Jxin

说说Golang goroutine并发那些事儿

华为云开发者联盟

线程 进程 并发 goroutines Go 语言

有了这个算法,图像上文字擦除再也用不上PS了

华为云开发者联盟

深度学习 算法 GAN 文字擦除 图像

【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)

五分钟学大数据

大数据 hadoop 2月春节不断更

过年不放假

IT蜗壳-Tango

七日更 2月春节不断更

架构进阶之路:复杂业务开发与领域驱动设计

程序员架构进阶

架构 方法论 七日更 28天写作 2月春节不断更

Web页面制作基础

我是哪吒

学习 程序员 面试 大前端 二月春节不断更

如何防止手机被盗刷

石云升

2月春节不断更 手机盗刷

某挂号平台在线挂号用例

侠女马姑娘

产品经理训练营

这个技术把时间切开,让生命愈合

脑极体

【LeetCode】最长湍流子数组

Albert

算法 LeetCode 2月春节不断更

4. 列表一学完,Python 会一半,滚雪球学 Python

梦想橡皮擦

python 爬虫 Python Monad 2月春节不断更

互联网医疗里,用户需要的是什么

卢嘉敏

需求 医疗 用户

「乐」话题王者第二季,欢乐开赛

InfoQ写作社区官方

InfoQ 牛年特别策划

什么是SNMP

面试官系列:讲几个分布式自增ID的方案?

后台技术汇

28天写作 2月春节不断更

LeetCode题解:153. 寻找旋转排序数组中的最小值,二分查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

「快」2月春节不断更

InfoQ写作社区官方

InfoQ 牛年特别策划

作业之用例

踏凌霄

每周总结(2月1日-2月7日)

Nydia

自动驾驶“绝地求生”结束了,但深兰的造车故事才刚刚开始

脑极体

Elasticsearch Mapping

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

  • 扫码加入 InfoQ 开发者交流群
Puppet OpenStack 介绍_文化 & 方法_陆源_InfoQ精选文章