跳转到: 导航, 搜索

Puppet/新模块

这些文档已过时,但为了历史原因和搜索访问而保留在此处。要查看最新文档,请参阅 https://docs.openstack.org/developer/puppet-openstack-guide/

启动新模块

社区方面

在提交新模块时,社区应尊重以下流程

  • 向邮件列表发送消息,宣布创建 OpenStack 新 Puppet 模块的意愿,并等待讨论进行。
  • 一旦邮件列表达成共识,用户可以通过执行以下两个操作继续进行
  1. 向 openstack-infra/project-config 提交评审以创建项目(添加 PTL 和一些核心成员作为评审人)
  2. 向 openstack/governance 提交评审,声明该项目是 PuppetOpenstack 的一部分(添加 PTL 和一些核心成员作为评审人)


有关治理添加,请遵循此处说明的流程: https://docs.openstack.org/infra/manual/creators.html#add-new-repository-to-the-governance-repository

技术方面

社区开发了两个与模块文件管理相关的项目


为什么有两个项目?虽然 modulesync 可以轻松地在项目之间保持一组通用文件同步(Gemfile、Rakefile、nodesets,...),但它不适用于动态内容和路径(类名、provider 等),因此需要使用 cookiecutter,以及这两个项目同时存在。


Modulesync: https://github.com/openstack/puppet-modulesync-configs

Cookiecutter: https://github.com/openstack/puppet-openstack-cookiecutter

实践

需求 

  • cookiecutter
  • modulesync (>= 0.5.0)
  • git
  • git-review
  • digest


为了使新的 Puppet 模块的样板代码更容易生成,提供了一个脚本。 https://github.com/openstack/puppet-openstack-cookiecutter/blob/master/contrib/bootstrap.sh

它的作用如下

步骤 1:生成模块的骨架

它使用 cookiecutter 生成模块的骨架。

步骤 2:检索项目的 git 仓库

它检索项目的官方 OpenStack 仓库

步骤 3:使用骨架中的文件创建初始提交

重用 OpenStack 仓库中的 .git,并对骨架目录中的文件进行初始提交

步骤 4:检索 puppet-modulesync-configs 目录并根据需要进行配置

它克隆 puppet-modulesync-configs 目录,并相应地配置 modulesync.yml 和 managed_modules.yml

步骤 5:运行 msync 并修改初始提交

它以 noop 模式运行 modulesync,并使用 puppet-modulesync-configs 中的文件修改步骤 3 中的提交

此时,您应该已经生成了一个简约但功能齐全的模块。

有些事情无法自动完成,并使用 FIXME 标签标记。受影响的文件是 

  • manifests/keystone/auth.pp
  • spec/classes/MYMODULENAME_keystone_auth_spec.rb
  • README.md


现在只需在脚本输出中指示的文件夹中运行 git review