《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的配置清单后,还需要使用一种简单、可扩展的方式将清单文件分发至大量的机器。下一节讲解如何来实现这些。

相关文章
|
25天前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
48 3
|
2天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
12 2
|
7天前
|
算法 网络安全 开发工具
[Git]关联远程库的两种方法及配置
本文介绍了 git 的四种连接方式:ssh 连接、HTTPS 连接、SVN 连接和 SVN + ssh 连接,重点讲解了 HTTPS 和 ssh 连接方式的配置及注意事项。文章详细解释了 HTTPS 连接的身份验证过程、常见问题及解决方案,以及 ssh 连接的公钥和私钥的创建、配置方法。此外,还介绍了如何在同一台电脑上连接多个 gitee 账号的方法。
37 0
[Git]关联远程库的两种方法及配置
|
1月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
35 1
|
2月前
|
网络协议 开发工具 网络虚拟化
SourceTree git 配置代理
SourceTree git 配置代理
53 1
|
29天前
|
编译器 网络安全 开发工具
git学习五:切换本地仓库出现的问题。修改git配置初始化。error:src refspec master does not match any。错误总结,送上几个案例
这篇文章是关于Git使用中遇到的一些问题及其解决方案的总结,包括切换本地仓库时的问题、修改Git初始化配置、以及解决"error: src refspec master does not match any"错误等。
50 0
|
2月前
|
存储 Shell 开发工具
内核维护者手册 - 配置Git【ChatGPT】
内核维护者手册 - 配置Git【ChatGPT】
|
3月前
|
JavaScript IDE 前端开发
前端开发工具配置 nodejs & git & IDE
前端开发工具配置 nodejs & git & IDE
|
3月前
|
安全 开发工具 git
coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git
这篇文章是关于如何在IDEA中配置Git、在Coding.net上创建项目和代码仓库,并将IDEA中的代码提交到远程代码仓库的详细教程,涵盖了Git安装、IDEA配置、项目创建、代码提交等步骤。
coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git
|
3月前
|
开发工具 git
Git使用经验总结2-配置用户名邮箱
Git使用经验总结2-配置用户名邮箱
40 0