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

相关文章
|
30天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
39 0
|
2月前
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
129 1
|
3月前
|
Linux 网络安全 开发工具
IDEA如何配置git和github
【11月更文挑战第14天】本指南详细介绍了如何在 IntelliJ IDEA 中配置 Git 和 GitHub,包括检查和设置 Git 路径、测试配置,以及通过 SSH 或 HTTPS 方式配置 GitHub 仓库的具体步骤。完成配置后,用户可在 IDEA 中轻松进行版本控制操作。
473 0
|
3月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
130 2
|
3月前
|
算法 网络安全 开发工具
[Git]关联远程库的两种方法及配置
本文介绍了 git 的四种连接方式:ssh 连接、HTTPS 连接、SVN 连接和 SVN + ssh 连接,重点讲解了 HTTPS 和 ssh 连接方式的配置及注意事项。文章详细解释了 HTTPS 连接的身份验证过程、常见问题及解决方案,以及 ssh 连接的公钥和私钥的创建、配置方法。此外,还介绍了如何在同一台电脑上连接多个 gitee 账号的方法。
316 0
[Git]关联远程库的两种方法及配置
|
4月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
121 3
|
4月前
|
编译器 网络安全 开发工具
git学习五:切换本地仓库出现的问题。修改git配置初始化。error:src refspec master does not match any。错误总结,送上几个案例
这篇文章是关于Git使用中遇到的一些问题及其解决方案的总结,包括切换本地仓库时的问题、修改Git初始化配置、以及解决"error: src refspec master does not match any"错误等。
136 0
|
4月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
62 1
|
5月前
|
网络协议 开发工具 网络虚拟化
SourceTree git 配置代理
SourceTree git 配置代理
154 1
|
5月前
|
存储 Shell 开发工具
内核维护者手册 - 配置Git【ChatGPT】
内核维护者手册 - 配置Git【ChatGPT】

推荐镜像

更多