如何做好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 基础上开发的. 为什么是开箱即用,它会集成哪些功能? 以上 ...
随机推荐
- thinkphp 3.1.3 配置debug开启报错
今天配置了一下thinkphp3.1.3 报错 无法加载模块:index 错误位置 FILE: D:\phpStudy\WWW\wwqq\thinkphp\Common\functions.php L ...
- JavaSE| 面向对象-类的五大成员
面向对象 面向对象只是其中一种编程思想,还有很多其他的编程思想:面向过程.面向切面.面向服务编程... 面向过程的思维方式:注重步骤.过程,面向过程强调的是功能行为: 面向对象的思维方式:关注的是“对 ...
- 解决VS打开文件出现No EditorOptionDefinition export found for the given option name问题
转载自http://stackoverflow.com/questions/23893497/no-editoroptiondefinition-export-found-error的第一个回答 Af ...
- docker部署springboot项目
本文介绍一下docker如何部署springboot项目. 前提条件: 1.可以运行jar包的环境 2.机器上已经安装了docker 3.准备部署的springboot的jar包 4.Dockerfi ...
- SpringBoot使用LomBok
Lombok是什么?它是一个能帮我们消除那些必须要写但是重复的代码,比如setter,getter,构造函数之类的方法. 首先先简单说一下idea安装lombok,有2种方法: 1.直接从http:/ ...
- VBA中FIND方法的使用说明zz
Find 方法在区域中查找特定信息. 语法 表达式.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, ...
- refine OpenRefine 3.0
refine 英[rɪˈfaɪn] 锐烦嗯 美[rɪˈfaɪn] vt. 提炼; 改善; 使高雅; == explore 英 [ɪkˈsplɔ:(r)] 一颗四普罗 美 [ɪkˈsplɔr] vi.勘 ...
- UOJ.35.[模板]后缀排序(后缀数组 倍增)
题目链接 论找到一个好的教程的正确性.. 后缀数组 下标从1编号: //299ms 2560kb #include <cstdio> #include <cstring> #i ...
- Shell脚本笔记(六)呈现数据
呈现数据 一.文件描述符 Linux系统将每个对象当做文件处理,这包括输入和输出进程.Linux用文件描述符来标识每个文件对象.每个进程最多可以有9个 文件描述符,bash shell保留了前三个文件 ...
- 第一章 初始STM32
1.3什么是STM32? ST是意法半导体,M是MIcroelectronisc的缩写,32表示32位. 合起来就是:ST公司开发的32位微控制器. 1.4 STM32 能做什么? STM32属于一个 ...