我遵循了一些“最佳实践”Puppet 2.7 手册并使用 git cvs 创建了代理 - puppet master 框架。不幸的是,这本书没有介绍 Gepetto,所以我被迫即兴创作了这一部分。
manifests
我有一个包含和文件夹的主 git 存储库modules
。我想在中添加自定义模块modules
,但在这样做时遇到了问题。
首先,我找不到任何类似“主配置”的项目类型,默认情况下,该项目包含manifests
和modules
文件夹。因此,我创建了一个裸“Puppet 项目”项目,并手动创建了文件夹。
因为 - 据我所知 - 在这个配置中 Gepetto 并不知道这个项目实际上会包含所有模块,所以它没有提供创建“Puppet 模块项目”的选项子项目,它将嵌套在“Puppet 项目”文件夹内modules
。
当我手动嵌套它(通过在向导中指定自定义位置New Puppet Module Project
)时,出现'Auto share git projects' has encountered a problem
错误:
无法忽略资源尝试 beginRule:F/puppet@puppetmaster/modules/unnamed,与外部范围规则不匹配:MultiRule[P/mymodule]
当所有内容都被诸如“主项目”之类的封装所有配置的东西所覆盖时,你们中是否有人设法让 Gepetto 与模块一起工作?
答案1
这是我从 Thomas Hallgren 那里得到的答案:
Geppetto 目前不支持带有嵌套模块的项目。它假设每个模块都有一个项目。但是,项目与磁盘上的物理位置不同,因此大多数布局都可以成功映射到 Geppetto 工作区。对于您下面提到的用例(带有“模块”文件夹的 Git 存储库),我认为映射它的最佳方法是采取以下步骤:
- 打开“Git 存储库”视图。您可以在“窗口”->“显示视图”->“其他...”->“Git”下找到它
- 将相关存储库添加到视图中,可以通过指定现有的本地克隆(带有绿色加号的黄色鼓)或克隆远程存储库(带有绿色箭头的两个黄色鼓)
- 展开存储库,然后展开“工作目录”和“模块”文件夹。
- 右键单击其中一个模块并选择“导入项目...”。将弹出一个向导
- 选择“导入为一般项目”并点击“完成”。项目现在显示在 Project Explorer 视图中。
- 右键点击项目并选择“添加Puppet项目性质”
对所有所需模块重复步骤 4-6。
您现在可以单独使用模块,并且 Geppetto 会将项目识别为模块项目并进行相应的映射,以便交叉引用等正常工作。
要将新模块添加到同一个 Git 存储库中的“modules”目录:
- 在项目资源管理器中右键单击并选择“新建”->“项目”->“Puppet 模块项目”
- 输入项目名称,保留“使用默认位置”的勾选,然后单击“完成”
- 右键单击项目并选择“团队”->“共享项目”。
- 在弹出的向导中选择“Git”
- 单击“下一步”,然后在下拉菜单中选择存储库
- 在“存储库内的路径”字段中输入“模块”
- 单击“完成”
您可以在以下 Geppetto 文档中找到更多信息: http://docs.puppetlabs.com/geppetto/4.0/#geppetto-and-pe
非常欢迎有关如何改进此流程的想法。