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

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

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

1.4 利用Git管理配置清单

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

可以取消对配置清单的更改并回滚至以前任意一个版本。
可以使用新的分支(branch)来测试新功能。
如果有多人需要修改配置清单,可以分别独立在自己的工作副本上进行,然后再合并所有的修改。
可以使用git log功能查看谁在什么时候做了什么修改。
准备工作
本节将导入现有的清单文件到Git仓库。如果读者已经在上一节创建了puppet目录,就使用它;否则,就使用当前的清单目录。

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

screenshot

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

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

ubuntu@cookbook:~/puppet$ sudo apt-get install git
2. 其次,需要一个GitHub账号(免费的开源项目,或支付少量费用创建私有仓库)和一个仓库。按照github.com的说明创建并初始化仓库(repository),确保勾选了github.com的版权说明Initialize this repository with a README。

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

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

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

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

ubuntu@cookbook:~$ git clone 
 git@github.com:bitfield/cookbook.git puppet
Cloning into 'puppet'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

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

ubuntu@cookbook:~$ mv puppet.import/* puppet/
4. 添加并提交新的文件至GitHub仓库,如果有必要,设置Git详细认证资料。

ubuntu@cookbook:~$ cd puppet
ubuntu@cookbook:~/puppet$ git status
# On branch master
# Untracked files:
#  (use "git add < file>..." to include in what will be committed)
#
#    manifests/
nothing added to commit but untracked files present (use "git add" to track)
ubuntu@cookbook:~/puppet$ git add manifests/
ubuntu@cookbook:~/puppet$ git config --global user.name "John Arundel"
ubuntu@cookbook:~/puppet$ git config --global user.email
 "john@bitfieldconsulting.com"
ubuntu@cookbook:~/puppet$ git commit -m "Importing"
[master a063a5b] Importing
Committer: John Arundel < john@bitfieldconsulting.com>
2 files changed, 6 insertions(+)
create mode 100644 manifests/nodes.pp
create mode 100644 manifests/site.pp

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

ubuntu@cookbook:~/puppet$ git push -u origin master
Counting objects: 6, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 457 bytes, done.
Total 5 (delta 0), reused 0 (delta 0)
To git@github.com:bitfield/cookbook.git
  6d6aa51..a063a5b master -> master

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

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

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

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

相关文章
|
1月前
|
Linux 开发工具 数据安全/隐私保护
【Linux】—— git的管理以及使用
【Linux】—— git的管理以及使用
|
1月前
|
小程序 Shell 网络安全
【微信小程序】-- 使用 Git 管理项目(五十)
【微信小程序】-- 使用 Git 管理项目(五十)
|
2月前
|
安全 Shell 网络安全
【Git】TortoiseGit(小乌龟)配置SSH和使用
【Git】TortoiseGit(小乌龟)配置SSH和使用
148 0
|
1月前
|
开发工具 数据库 数据安全/隐私保护
【Git】—— git的配置
【Git】—— git的配置
【Git】—— git的配置
|
2月前
|
网络安全 开发工具 数据安全/隐私保护
[Git]关联远程库的两种方法及配置
本篇文章对gitee公钥配置、同电脑连接多个gitee账号公钥配置等方法进行阐述, 如果文中阐述不全或不对的,多多交流。
72 0
[Git]关联远程库的两种方法及配置
|
2月前
|
存储 Linux 开发工具
「译文」使用 submodule 和 subtree 管理 Git 项目
「译文」使用 submodule 和 subtree 管理 Git 项目
|
3月前
|
存储 网络安全 数据处理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
|
3月前
|
开发工具 git 开发者
Git管理分支都有哪些,不同分支作用是什么?
在Git中,有多种类型的分支,每种分支都有不同的作用。以下是一些常见的Git分支以及它们的作用:
38 0
|
4月前
|
Ubuntu Linux 开发工具
Linux Ubuntu配置Git的方法
Linux Ubuntu配置Git的方法
|
4月前
|
Linux Shell 开发工具
配置git识别中文
配置git识别中文
39 1

推荐镜像

更多