天天看点

《Puppet实战手册》——1.4 利用Git管理配置清单

本节书摘来自异步社区《puppet实战手册》一书中的第1章,第1.4节,作者:【英】john arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

把puppet配置清单存放在版本控制系统git或subversion中管理(推荐git),所有puppet管理的机器都从仓库取出配置,这是一个非常好的想法。它有以下几个优点。

可以取消对配置清单的更改并回滚至以前任意一个版本。

可以使用新的分支(branch)来测试新功能。

如果有多人需要修改配置清单,可以分别独立在自己的工作副本上进行,然后再合并所有的修改。

可以使用git log功能查看谁在什么时候做了什么修改。

准备工作

本节将导入现有的清单文件到git仓库。如果读者已经在上一节创建了puppet目录,就使用它;否则,就使用当前的清单目录。

本书将使用流行的github服务作为本书的git服务器。不强制读者这么做,读者也可以很容易地运行自己的git服务器,但github的确简化了很多事情。如果读者已经在使用git并有一台合适的服务器,就可以放心地使用自己的。

《Puppet实战手册》——1.4 利用Git管理配置清单

需要注意的是,目前github只提供公开的免费仓库(也就是说,每个人都可以看到仓库里的puppet配置清单)。当配置清单中有机密数据(如密码)时,使用github就不是一个好主意。使用本书中的示例来玩一玩,做些实验还可以,但在生产环境中使用时,需要考虑使用私有的github仓库来代替。

参照下面的步骤导入配置清单。

1. 首先,在服务器上安装git。

<code>ubuntu@cookbook:~/puppet$ sudo apt-get install git</code>

2. 其次,需要一个github账号(免费的开源项目,或支付少量费用创建私有仓库)和一个仓库。按照github.com的说明创建并初始化仓库(repository),确保勾选了github.com的版权说明initialize this repository with a readme。

3. 授权ssh密钥来读/写仓库。

操作步骤

现在,将配置清单添加到git仓库。复制仓库并移动配置清单文件到仓库中,操作步骤如下。

1. 首先,将puppet目录改名。

<code>mv puppet puppet.import</code>

2. 在服务器上克隆github上的仓库到puppet目录(使用在github上创建的仓库url,可以在github页面上获取)。

3. 将puppet.import目录下所有文件移动到puppet目录。

<code>ubuntu@cookbook:~$ mv puppet.import/* puppet/</code>

4. 添加并提交新的文件至github仓库,如果有必要,设置git详细认证资料。

5. 最后,将变更推送至github。

工作原理

git会跟踪文件的变更,并存储完整的变更历史记录。仓库的历史记录由多个提交组成。一次git提交包含使用git commit命令提交时仓库的状态和注释。

现在,已经将puppet配置清单文件添加到仓库并创建了第一条提交。这个提交更新了仓库的历史,但仅保存在本地工作副本中。如果要将副本的变化同步到github上,还需要运行git push命令推送所有变更。

更多参考

现在,有一个中心git仓库来管理puppet配置清单,这样就可以在不同地方检出它的副本,修改并提交变更。比如,有一个工作团队,团队中每一个成员都可以将这个仓库复制至本地,并通过github同步他们的修改。

使用git控制puppet的配置清单后,还需要使用一种简单、可扩展的方式将清单文件分发至大量的机器。下一节讲解如何来实现这些。