如何做好Puppet Modules管理
如何做好Puppet Modules管理
不同于其他的Openstack项目,puppet modules是一个数量庞大的存在。以我们当前在使用中的puppet modules为例,就已经多达96个(破百计日可待)。
依赖管理
目前有三种管理依赖的方式:
- Git submodules 通过git submodule的方式管理各个子模块
- Puppet module tool 可以使用puppet forge基于module名称和版本来搜索和安装module
- Librarian-puppet ruby bundler的扩展,使用Puppetfile来管理
我们分别就这三种方式依次介绍一下,我们这里不说哪种方法最好,但我们会说明我们根据什么原因最终选择了哪种方法。
1.Puppet module tool
该方法使用metadata.json文件来管理每个module之间的依赖关系,以puppet-nova为例:
"dependencies": [
{ "name": "puppetlabs/apache", "version_requirement": ">=1.0.0 <2.0.0" },
{ "name": "duritong/sysctl", "version_requirement": ">=0.0.1 <1.0.0" },
{ "name": "openstack/cinder", "version_requirement": ">=8.0.0 <9.0.0" },
{ "name": "openstack/glance", "version_requirement": ">=8.0.0 <9.0.0" },
{ "name": "puppetlabs/inifile", "version_requirement": ">=1.0.0 <2.0.0" },
{ "name": "openstack/keystone", "version_requirement": ">=8.0.0 <9.0.0" },
{ "name": "puppetlabs/rabbitmq", "version_requirement": ">=2.0.2 <6.0.0" },
{ "name": "puppetlabs/stdlib", "version_requirement": ">=4.0.0 <5.0.0" },
{ "name": "openstack/openstacklib", "version_requirement": ">=8.0.0 <9.0.0" },
{ "name": "openstack/oslo", "version_requirement": "<9.0.0" }
]
2.Librarian-puppet
librarian-puppet支持从Modulefile或者metadata.json读取依赖,或者使用独立的Puppetfile。例如,社区的puppet-openstack_integration项目里就包含了Puppetfile:
## OpenStack modules
mod 'aodh',
:git => 'https://git.openstack.org/openstack/puppet-aodh',
:ref => 'master'
mod 'barbican',
:git => 'https://git.openstack.org/openstack/puppet-barbican',
:ref => 'master'
...
可以使用以下命令安装其所依赖的module:
librarian-puppet install --verbose
3.git submodule
git submodule可以同时管理多个独立的项目,同时保持提交的独立。这也是目前我们所选择的方式。
我们根据Puppet Module的类型将其划分成了三个项目(你可以理解为modules的group):
- sunfire 内部自研服务模块
- storm Openstack服务相关模块
- karma 运维系统相关模块
我们会为storm创建多个分支,例如:liberty,mitaka。在dev和test环境会使用git命令来切换代码,而在生产环境则会使用RPM包的方式来管理。这样做的好处是:
- 遵循线上代码统一使用软件包管理的方式
- dev和test环境可以随时修复代码并且灵活切换
如何做好Puppet Modules管理的更多相关文章
- puppet来管理文件和软件包
puppet来管理文件和软件包 1 exec的使用,可以运行shell命令 为配置文件添加配置,指示写了关键部分,其他配置省略没写 代码示例如下: [root@pup manifests]# cat ...
- Puppet自动化管理配置
Puppet:开源系统配置和管理工具 随着虚拟化和云计算技术的兴起,计算机集群的自动化管理和配置成为了数据中心运维管理的热点.对于 IaaS.Paas.Saas 来说,随着业务需求的提升,后台计算机集 ...
- puppet批量管理500多台服务器
前言 puppet使用了有一段时间了,之前写的手顺书一直未发布到blog上来,今天正好有空,写下一点笔记.公司在用的服务器有500多台,基本都为CentOS,版本有5和6两种,管理起来很不方便,尤其是 ...
- puppet前端管理工具foreman-proxy bind 127.0.0.1:8443问题解决
最近在玩foreman,发现部署foreman-proxy的时候,总是出现8443bind在127.0.0.1端口,导致无法访问的情况. 如下图: 经过strace -o log.txt bin/sm ...
- [翻译]用 Puppet 搭建易管理的服务器基础架构(4)
我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第四部分. 原文地址:http://blog.jobbole.com/89214/ 本文由 伯乐在线 - Wing 翻译,黄利民 校稿 ...
- [翻译]用 Puppet 搭建易管理的服务器基础架构(3)
我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第三部分. 本文由 伯乐在线 - Wing 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Manuel Kiessling.欢迎加 ...
- 手动编写的几个简单的puppet管理配置
puppet在自动化配置管理方面有很强大的优势,这里就不做过多介绍了,下面记录下几个简单的puppet管理配置: 一.首先在服务端和客户端安装puppet和facter 1)服务端 安装Puppet ...
- puppet aix之自动化用户管理
一. 用户组的管理 (一) Puppet组管理特性 1. manages_aix_lam 用来管理AIX的LAM(Loadable Authentication Module)系统. 2 ...
- [系列] 使用 go modules 包管理工具(一)
目录 概述 初始化 添加依赖包 go mod 命令 小结 源码地址 概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的. 为什么是开箱即用,它会集成哪些功能? 以上 ...
随机推荐
- 三色抽卡游戏 博弈论nim
你的对手太坏了!在每年的年度三色抽卡游戏锦标赛上,你的对手总是能打败你,他的秘诀是什么? 在每局三色抽卡游戏中,有n个卡组,每个卡组里所有卡片的颜色都相同,且颜色只会是红(R).绿(G).蓝(B)中的 ...
- 20165235 祁瑛 2018-4 《Java程序设计》第八周学习总结
20165235 祁瑛 2018-4 <Java程序设计>第八周学习总结 教材学习内容总结 操作系统与进程 程序是一段静态的代码,它是应用软件执行的蓝本.进程是程序的一次动态执行过程,它对 ...
- themeleaf跳转锚链接
<a class="lianjie3" th:href="@{/}+'#requires'"></a>
- 【JavaScript】underscore
例: 'use strict'; _.map([1, 2, 3], (x) => x * x); // [1, 4, 9] No1: [every/some] 当集合的所有元素都满足条件时,_. ...
- poj 3067 Japan 【树状数组】
<题目链接> 题目大意: 有两个点集,这两个点集从上至下分别从1~n,1~m编号,现在给出n组数据,(x,y),表示左边点集编号为x的点与右边点集编号为y的点相连,现在要求计算这些线段的交 ...
- 谈谈《Dotnet core结合jquery的前后端加密解密密码密文传输的实现》一文中后端解密失败的原因
详情请看<Dotnet core结合jquery的前后端加密解密密码密文传输的实现>,正常来讲,这个博客里面的代码是没有问题的,但是我有时候却会直接报错,原因是后台解密失败:Interna ...
- 橡皮筋进度条ElasticProgressBar
橡皮筋进度条ElasticProgressBar 橡皮筋进度条是一个极具动画效果的进度条.该进度条不仅具有皮筋效果,还带有进度数据显示,让用户可以很清晰的看到当前的进度,可用于下载.加载进度等场景.E ...
- 使用 universalimageloader 缓存图片的配置类及使用方法
0.gradle 配置 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:juni ...
- css的基本定位机制
分为三种:普通流.浮动.绝对定位 普通流:默认,html文档的排列顺序块级从上到下(垂直距离由margin-top.margin-bottom决定):行内元素在一行中从左到右(由margin-left ...
- MySQL分页limit速度太慢的优化方法
limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT ...