返回介绍

puppet-openstack-cookiebutter

发布于 2025-02-18 00:20:48 字数 3421 浏览 0 评论 0 收藏 0

本篇是选读章节,和 Openstack 部署没有直接的管理,本节推荐从事开发并维护自研 Puppet module 的读者。

1.先睹为快

puppet-cookiebutter 模块用于快速生成一个符合 PuppetOpenstack 代码风格的新 module。 不想看下面大段的代码说明,已经跃跃欲试了?

Ok,我们开始吧!

打开虚拟机终端并输入以下命令:

# 请使用 pip 安装 cookiecutter
$ cookiecutter puppet-openstack-cookiecutter/
project_name [YOURPROJECTNAME without 'puppet-']: test
version [0.0.1]:
year [2016]:

接着进入到 puppet-test 模块查看其目录结构,包含 manifests/,spec/和 lib/目录,manifests 目录下创建了通用代码目录,例如 db/下的 mysql.pp, posygresql.pp, sync.pp 等。 同时 puppet-test 添加了 LICENSE 和 README 等文件,在此基础上可以开始进行新 module 的开发工作:

|-- LICENSE
|-- README.md
|-- lib
|   `-- puppet
|       |-- provider
|       |   `-- test_config
|       |       `-- ini_setting.rb
|       `-- type
|           `-- test_config.rb
|-- manifests
|   |-- config.pp
|   |-- db
|   |   |-- mysql.pp
|   |   |-- postgresql.pp
|   |   `-- sync.pp
|   |-- db.pp
|   |-- init.pp
|   |-- keystone
|   |   `-- auth.pp
|   |-- logging.pp
|   |-- params.pp
|   `-- policy.pp
|-- metadata.json
|-- spec
|   |-- classes
|   |   |-- test_db_mysql_spec.rb
|   |   |-- test_db_postgresql_spec.rb
|   |   |-- test_db_spec.rb
|   |   |-- test_keystone_auth_spec.rb
|   |   |-- test_logging_spec.rb
|   |   `-- test_policy_spec.rb
|   |-- shared_examples.rb
|   `-- unit
|       |-- provider
|       |   `-- test_config
|       |       `-- ini_setting_spec.rb
|       `-- type
|           `-- test_config_spec.rb
`-- tests
    `-- init.pp

模块讲解

在介绍 puppet-openstack-cookiebutter 模块之前,先了解一下 Cookiecutter :

一个用于创建项目模板的命令行工具集,最初的目的是用于创建 Python 项目。

使用该工具可以非常快速地生成一个 Python 软件包项目:

cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git

关于 cookiecutter 的使用就不再展开,更详细的文档说明请参见:

本节不涉及任何代码的讲解,仅简要介绍一下其工作原理:cookiecutter 使用了 Python 的 Jinja2 库对预置模板进行渲染,在 puppet-openstack-cookiebutter 模块中有一个目录是 puppet-{{cookiecutter.project_name}} ,其目录结构如下:

.
|-- lib
|   `-- puppet
|       |-- provider
|       |   `-- {{cookiecutter.project_name}}_config
|       `-- type
|-- manifests
|   |-- db
|   `-- keystone
|-- spec
|   |-- classes
|   `-- unit
|       |-- provider
|       |   `-- {{cookiecutter.project_name}}_config
|       `-- type
`-- tests

可以看到模板变量 {{cookiecutter.project_name}} ,那么在何处定义呢?

打开 cookiecutter.json 文件就可以看到:

{
    "project_name": "YOURPROJECTNAME without 'puppet-'",
    "version": "0.0.1",
    "year":"2016"
}

3.小结

puppet-openstack-cookiebutter 是一个辅助性模块,通过它可以快速地创建一个 Openstack 服务模块的所有基础代码目录和文件。如果在公司内部恰巧有开发内部模块的需求,那么通过它可以快速地构建出一个新模块。

4.动手练习

  1. 阅读 contrib/bootstrap.sh 脚本并解释其使用用途
  2. 在 puppet-中添加一个新文件 guide.md,并生成一个新模块 puppet-cook

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文