前言

说实话,看到自己在博客园的排名感到惭愧,因为自己最近两年没有持续地在博客园上写技术博客了,有人私下问我是不是荒废了?翻翻15年和16年的博客,真的是少的可怜。一方面的确由于岗位的变化,导致了工作变得越来越忙, 一方面写作的精力放在了公司技术公众号,内部技术和管理文档,摄影博客上了。

我一直很感慨时代的变化,读研的时候,我还在图书馆翻着一本本厚厚的专业书,短短几年后的今天知识获取来源已变得非常广泛:博客,公众号,微博,技术分享会等等,书籍的影响力反而变得渺小了。

但我内心里一直非常渴望自己能够静下心来,把近年来获取的知识和经验整理,并作专注性较强的输出。

因此,很高兴6月的第一周,由一帮大龄儿童们一起发布了《深入理解Openstack自动化部署》的第一个正式版本。说起部署这个事儿,一直伴随着Openstack诞生到现在,称得上是一个非常古老的话题了,然而在最近Austin Summit上,我们依然可以看到大量与部署有关的topic。

部署发展到今天,除了向部署速度更快和支持能力更强的方向发展,更重要的是部署作为运维体系中的一个重要环节,所有人都在考虑它的延展性,也就是如何能使用统一的平台或工具来完成Openstack集群的安装,配置,变更,升级和状态管理,因此如何选项显得非常重要。

为什么是PuppetOpenstack Modules?

Puppet是目前CMS领域中的领头羊,而PuppetOpenstack Modules项目(简称POM)诞生于12年,13年中进入到Openstack官方孵化项目(Stackforge),随后又成为了Openstack官方Governance项目。POM之所以能取得成功的原因主要在于其获得了大量公司和工程师的参与,甚至有一些主流的部署工具直接集成了POM:如Mirantis的Fuel,Redhat的Packstack, Openstack官方的TripleO,UnitedStack的Ctask都直接使用POM的upstream codes作为Openstack服务的部署模块,并且连续7次在Openstack社区的User survey中,位列deployment tools领域的第一。

我们是谁?

UnitedStack DevOps Team是一支很年轻的团队,不过我们持续专注在Openstack部署领域已有5个年头,积累了一些经验,因此想和各位分享:

  • 在开源社区:早在12年底,POM项目尚处于雏形阶段我们开始参与其中,并促成了13年 POM项目从Puppetlabs官方项目转入到Openstack社区,我们对于POM项目的贡献也得到了社区的认可,其中xingchao在13年的时候,成为该项目的核心开发人员。
  • 在工程领域:截止到2016年5月,我们一共使用了96个puppet modules, 6台PuppetMaster服务器, 集中管理着87个Openstack集群, 7套不同的部署环境,支撑了近3500台Openstack集群的服务器,我们经历了Puppet版本的数次升级,内部代码的多次重构和POM的多次版本升级,每日Openstack线上集群的频繁变更,我们也经历了Puppet,PuppetDB的性能调优,踩过了无数个看不见的明坑和暗坑。

本书讲什么?

本书是关于Openstack自动化部署工作核心部分的讲解:PuppetOpenstack modules和相关基础modules的深入分析和最佳实践。

通过这本书,你可以学习到:

  • 当前最流行的部署项目PuppetOpenstack的代码级深入讲解
  • Openstack Mitaka版本核心服务的部署讲解
  • 关于配置管理的最佳实践总结
  • Puppet的一些使用技巧
  • 如何一本正经地胡说八道

举个栗子,在puppet-keystone模块章节中,我们首先从Keystone的基本概念开始介绍,试图为读者理清楚v3中关于domain,group,project,role,user之间的关系。然后我们通过一个快速部署keystone的实例让你先睹为快,接着我们就深入到核心代码中去讲解是如何做到的,最后我们会对本节重要的内容做一个小结。当然光看不练就是假把式了,我们为读者们精心准备了一些习题,让读者动手实际练习,加深理解。

下个版本?

我们认为docs is codes。 因此,本书也遵循常见的release规范。在初期,我们会在每月第一周发布新版本以保持快速地迭代,同时我们也会保持对于已完成章节的内容更新,如何你想要了解更多细节,请参阅本书最后的 版本日志 一节。

如何参与?

本书遵循开源管理方式,使用markdown语法编写,git作为版本控制,并托管在github上,如果你也对本书感兴趣,有任何改进的建议和想法,欢迎加入我们一起来添砖加瓦。

更多细节请参与本书的 如何参与 一节。

关于出版

目前虽然有多家出版社联系,但我没有答应,一是本书还有大量的后续编写计划没有开始,二是觉得一本书至少得经历多次的迭代才能变得成熟和稳定。所以,如何问我什么时候会出纸质版本?也许要等到我们发布v1.0版本的时候吧:D

深入理解Openstack自动化部署的更多相关文章

  1. Devstack 多节点自动化部署

    本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...

  2. K8S(16)集成实战-使用spinnaker进行自动化部署

    K8s集成实战-使用spinnaker进行自动化部署 1 spinnaker概述和选型 1.1 概述 1.1.1 主要功能 Spinnaker是一个开源的多云持续交付平台,提供快速.可靠.稳定的软件变 ...

  3. 一文理解OpenStack网络

    摘要:如果你能理解OpenStack的网络,那么对于其他云平台的网络,应该也可以通过分析后理解掌握了. 本文分享自华为云社区<<跟唐老师学习云网络> - OpenStack网络实现& ...

  4. 理解 OpenStack 高可用(HA)(1):OpenStack 高可用和灾备方案 [OpenStack HA and DR]

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  5. [转]基于AWS的自动化部署实践

    作者 徐桂林 发布于 2014年1月22日 -------------------------------------------------------------------- 1. 背景 在过去 ...

  6. 深入理解openstack网络架构(4)-----连接到public network

    原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture3 译文转自:http://b ...

  7. 深入理解openstack网络架构(1)

    原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture 译文转载自:http://b ...

  8. 理解 OpenStack + Ceph (5):OpenStack 与 Ceph 之间的集成 [OpenStack Integration with Ceph]

    理解 OpenStack + Ceph 系列文章: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenS ...

  9. 理解 OpenStack + Ceph (2):Ceph 的物理和逻辑结构 [Ceph Architecture]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

随机推荐

  1. Python模块——bisect

    bisect是python内置的模块,主要用于对有序列进行操作.具体用法如下: 模块导入:import bisect 内容查看:dir(bisect) 这个模块包含了: 五个变量:builtins, ...

  2. 20145318赵一Java课程总结

    20145318赵一Java课程总结 每周读书笔记链接汇总 问卷调查 第1周读书笔记 第2周读书笔记 第3周读书笔记 第4周读书笔记 第5周读书笔记 第6周读书笔记 第7周读书笔记 第8周读书笔记 第 ...

  3. 云计算和大数据时代网络技术揭秘(十二)自定义网络SDN

    软件定义网络——SDN SDN是网络技术热点,即软件定义网络,OpenFlow是实现SDN思想的一个框架标准, open是指公开.开放,具体为控制平面的规则由各个通信厂家自定义变为公开的技术标准, f ...

  4. C# HttpHelper 采集

    httphelper http://www.sufeinet.com/thread-6-1-1.html

  5. wexinjs 调用

    public class Utils    {       static string appid = GetAppSettingValue("appid");       sta ...

  6. 关于IE8及其以下的IE版本不支持getElementsByClassName

    之前做一下项目的时候知道IE8以及其以下的版本不支持getElementsByClassName,于是乎自己写了一个函数重新定义getElementsByClassName,函数代码如下: funct ...

  7. 斯坦福第三课:线性代数回顾(Linear Algebra Review)

    3.1  矩阵和向量 3.2  加法和标量乘法 3.3  矩阵向量乘法 3.4  矩阵乘法 3.5  矩阵乘法的性质 3.6  逆.转置 3.1  矩阵和向量 如图:这个是 4×2 矩阵,即 4 行  ...

  8. React与ES6(三)ES6类和方法绑定

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  9. IMP数据到指定的表空间

    IMP数据到指定的表空间 当我们通过imp导入dmp文件时,默认的情况下,数据会导入到exp出的dmp文件所对应的表空间里面. 比如:通过orcl_dev用户,exp数据,用orcl_test用户im ...

  10. HTML回顾

    <frameset>和<body>是同一级的,已经在html5中被弃用    结合---->    效果   注意::::span标签不自动换行****