深入理解OpenStack自动化部署
  • 前言
  • 初识PuppetOpenstack
    • 相关约定
    • 术语表
    • PuppetOpenstack项目简介
  • Puppet开发基础
    • 关于Puppet
    • Puppet核心概念
    • 理解Hiera
    • 准备开发测试环境
  • OpenStack基础服务模块
    • puppet-apache模块
    • puppet-memcached模块
    • puppet-sysctl模块
    • puppet-rsync模块
    • puppet-xinetd模块
    • puppet-rabbitmq模块
    • puppet-firewall模块
    • puppet-mysql模块
    • puppet-vcsrepo模块
    • puppet-mongodb模块
    • puppet-ceph
  • Openstack服务模块
    • OpenStack模块代码结构
    • puppet-keystone模块
    • puppet-nova
    • puppet-neutron
    • puppet-glance
    • puppet-horizon
    • puppet-ceilometer
    • puppet-cinder
    • puppet-tempest
    • puppet-heat
    • puppet-swift
    • puppet-trove
    • puppet-sahara
    • puppet-manila
    • puppet-rally
    • puppet-designate
    • puppet-aodh模块
  • PuppetOpenstack公共库和工具类模块
    • puppet-oslo
    • puppet-vswitch模块
    • puppet-openstacklib
    • puppet-openstack-integration
    • puppet-openstack-specs
    • puppet-openstack-cookiebutter
    • puppet-modulesync-configs
    • puppet-openstack_spec_helper
    • puppet-stdlib
    • puppet-openstack_extras
  • 最佳实践
    • 模块管理
    • Hiera
    • 提交规范
    • 正确使用环境
    • 转发层规范
    • 代码风格
    • Standalone vs C\/S 模式
    • Puppet版本的选择
    • Puppet4的新特性和变化
    • Puppet的能与不能
  • 其他部署工具
    • Fuel
    • Kolla
    • TripleO
    • Packstack
    • OSA
    • DevStack
    • 编写一个定制化部署工具
  • 结语
Powered by GitBook
On this page
  • 1.先睹为快
  • 模块讲解
  • 3.小结
  • 4.动手练习

Was this helpful?

  1. PuppetOpenstack公共库和工具类模块

puppet-openstack-cookiebutter

Previouspuppet-openstack-specsNextpuppet-modulesync-configs

Last updated 6 years ago

Was this helpful?

本篇是选读章节,和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

Documentation:

GitHub:

PyPI:

https://cookiecutter.readthedocs.io
https://github.com/audreyr/cookiecutter
https://pypi.python.org/pypi/cookiecutter
先睹为快
模块讲解
小结
动手练习 - 光看不练假把式