packstack总体流程分析(1)
时间 2016-05-16
原文 http://blog.csdn.net/xiangpingli/article/details/51429163
packstack总体流程分(1)
(1)plugins中的每个文件对应一种服务:
比如cinder_xxx.py对应cinder服务的部署
Nova_xxx.py对应nova服务的部署
(2)Puppet/templates中每几个文件对应一个服务,比如cinder.pp,cinder_backup.pp,cinder_lvm.pp,
其中每个文件对应某种服务的某项配置
(3)Plugins/xxx.py中的文件会有create_manifest和creat_xxx_manitest,其中create_manifest是必有的,creat_xxx_manitest可能没有,也可能有多个
这些create_manitest、create_xxx_manitest,有三个语句,分别给manifestfile、manifestdata赋值,然后将manifestfile、manifestdata生成manitestFile:
比如:cinder_250.py中的create_keystone_manifest:
manifestfile = "%s_keystone.pp"% config['CONFIG_CONTROLLER_HOST']
manifestdata = getManifestTemplate("keystone_cinder")
appendManifestFile(manifestfile, manifestdata)
cinder_250.py中的create_manifest:
manifestdata =getManifestTemplate(get_mq(config, "cinder"))
manifestdata += getManifestTemplate("cinder")
manifestdata += getManifestTemplate('cinder_ceilometer')
manifestfile = "%s_cinder.pp" % config['CONFIG_STORAGE_HOST']
appendManifestFile(manifestfile,manifestdata)
这里manifestdata是从配置中(answer-file)中获取配置
getManifestTemplate和appendManifestFile在ospluginutils.py中定义
getManifestTemplate从puppet/templates/xxx.pp中获取某一服务的某项配置
调用appendManifestFile之后,在/var/tmp/packstack/xxx/manifests/下生成puppet文件,比如:
/var/tmp/packstack/34c930543a234464b7f73665dc2c44fc/manifests/192.168.129.130_nova.pp
接下来主要分析:
(1)这些create_xxx_manifest是由哪里来调用的?
(2)/var/tmp/packstack/xxx/xxx.pp是如何被执行的?