我的 Puppet 开发/测试服务器有一个 git 配置,如下所示:
- 开发人员在他/她的 /home 目录中有一个工作目录,其中实际上对配置进行了更改。
- 更改从每个工作目录推送到中央的裸存储库。
- 然后将更改拉入进行测试的开发目录中。
- 然后将更改拉入生产存储库。但是,在生产存储库中,我想忽略包含来自开发的主机特定信息的 manifests/ 目录。这个想法是生产存储库将包含其他清单或不包含清单,以便在其他地方控制清单。
当我从存储库中删除目录,然后在 .gitignore 文件中添加一个条目时,git status
告诉我生产存储库有需要提交的更改(已删除的目录)并且是开发存储库之前的一个提交。
我发现通过将目录添加到 .gitignore 而将目录保留在文件系统上可以缓解这种情况。但是,如果我选择在生产清单目录中保留不同的主机列表,事情可能会立即变成梨形。
我能想到的唯一其他方法是为 Dev 清单和模块目录创建单独的存储库,这将允许我将模块更新拉入 Prod,同时不理会清单。然后,我可以从 /home 目录 repo 创建一个单独的存储库链,通过一个新的中央裸仓库仅用于生产清单,并从中单独提取。但是,我可以将其视为非初学者,因为我已经在 Production 目录下创建了 git 存储库。您不能让两个存储库为一个目录提供服务,对吗?
也许我必须将每个清单和模块目录的 git repo 放在这些目录下。
这是一个可行的方法吗?这个问题还有其他常见的解决方案吗?我对 git 还很陌生,所以我不知道它有多强大。
编辑:链接到代表我正在尝试做的图表:Puppet git repo diagram。您可以看到为什么我想在每个环境下保留一个单独的节点清单。