> For the complete documentation index, see [llms.txt](https://newptone.gitbook.io/deployopenstackwithpuppet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://newptone.gitbook.io/deployopenstackwithpuppet/bestpractice.md).

# 最佳实践

> Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.\
>             — Alan J. Perlis, “Epigrams in Programming”

我们在一一介绍了众多基础模块，Openstack模块以及公共库模块后，是否就可以抡起袖子开始做大规模线上部署了?\
答案是No。

哎，有话好好说，你们别丢臭鸡蛋啊...\
读者：%#@($#@!，你骗我读了那么长的文档，竟然不能用于线上部署！

部署是一项复杂的系统工程，前期的架构设计，硬件规划和兼容性和性能测试，采购，上架，裸机操作系统安装，网络配置，这些都完成了，才到了软件部署阶段。 熟悉本书介绍的Puppet modules，加上对于Puppet的基础使用，的确是可以胜任Openstack集群的部署和配置管理了。 但是我们想把积累了5年的Openstack部署经验和4年的Puppet管理线上集群各种经验和教训归纳成最佳实践告诉给读者，以避免不合理的设计，为后期的运维管理埋下不稳定因素。

## 本章内容

我们将其归纳为以下几大块。

1.代码管理相关：

> 代码的规范与否体现了一个程序员的素质，代码的管理则反映了一家公司对待技术的态度。

那么代码规范体现在以下几点：

* 使用版本控制工具进行管理
* 符合一门语言的通用代码风格要求
* 完整的文档，包含commit消息，代码注释，架构文档等
* 不使用花式技巧

2.配置管理相关:

* Hiera
* Node Definition
* Environment
* PuppetDB

3.任务编排相关:

* ClusterShell
* Ansible

4.运维原则相关:

* 配置管理操作的基本守则
