作者:单身王子550130 | 来源:互联网 | 2014-05-27 20:14
从puppetlabs上安装puppetlabs-openstack模块,在模块安装完成后,可以看到OpenStack模块中包含了各个组件和其他子模块,以及各个模块的依赖关系。puppetmodulelist--tree如下(部分):└─┬puppetlabs-openstack(v2.2.0)├─┬puppetlab
从puppetlabs上安装puppetlabs-openstack模块,在模块安装完成后,可以看到OpenStack模块中包含了各个组件和其他子模块,以及各个模块的依赖关系。
puppet module list --tree
如下(部分):
└─┬ puppetlabs-openstack (v2.2.0)
├─┬ puppetlabs-glance (v2.2.0)
│ ├── puppetlabs-inifile (v1.0.0)
│ └─┬ puppetlabs-keystone (v2.2.0)
│ └─┬ puppetlabs-mysql (v0.9.0)
│ └── puppetlabs-stdlib
(v4.1.0)
这些模块是怎样设置依赖关系的?
我们自己写的模块怎样module list出依赖关系?
下面根据我们自己写的openstack模块,举个设置模块依赖的例子,其实很简单:
比如要设置openstack模块依赖nova、keystone、glance、cinder、neutron、horizon模块:
(openstack 、nova、glance、keystone等其他组件都在同一级目录下)
1、首先:在nova模块目录下,编辑 vi Modulefile
文件,设置name、version、author等信息:
name 'zhaowei-nova'
version '0.1.0'
source 'UNKNOWN'
author 'zhaowei'
license 'Apache License, Version 2.0'
summary 'UNKNOWN'
description 'UNKNOWN'
project_page 'UNKNOWN'
## Add dependencies, if any:
# dependency 'username/name', '>= 1.2.0'
2、编辑完成后,构建模块依赖:
puppet module build
在nova目录下会生成pkg目录,拷贝pkg子目录下的metadata.json文件到nova目录:
cp ./pkg/zhaowei-nova-0.1.0/metadata.json .
pkg目录就没用了,可以删除pkg目录:
rm -rf pkg
同理,在keystone、glance、cinder、neutron、horizon模块目录下,执行同上操作。
3、最后再设置openstack模块中的依赖关系:
同样是编辑Modulefile文件,不过这里要添加子模块的依赖关系了,如下:
name 'zhaowei-openstack'
version '0.1.0'
source 'UNKNOWN'
author 'zhaowei'
license 'Apache License, Version 2.0'
summary 'openstack deployment puppet module'
description 'openstack deployment puppet module'
project_page 'UNKNOWN'
## Add dependencies, if any:
# dependency 'username/name', '>= 1.2.0'
dependency 'zhaowei/keystone', '>=0.1.0'
dependency 'zhaowei/nova', '>=0.1.0'
dependency 'zhaowei/glance', '>=0.1.0'
dependency 'zhaowei/horizon', '>=0.1.0'
dependency 'zhaowei/neutron', '>=0.1.0'
dependency 'zhaowei/cinder', '>=0.1.0'
编辑完成后,重新构建模块生成依赖关系:
puppet module build
拷贝metadata.json文件:
cp ./pkg/zhaowei-openstack-0.1.0/metadata.json .
pkg目录就没用了,可以删除pkg目录:
rm -rf pkg
4、查看设置的依赖关系:
puppet module list --tree
├─┬ zhaowei-openstack (v0.1.0)
│ ├── zhaowei-keystone (v0.1.0)
│ ├── zhaowei-nova (v0.1.0)
│ ├── zhaowei-glance (v0.1.0)
│ ├── zhaowei-horizon (v0.1.0)
│ ├─┬ zhaowei-neutron (v0.1.0)
5、模块可以递归设置依赖关系