packstack总体流程分析2

本文详细解析了Packstack部署OpenStack过程中,如何通过调用各插件中的create_xxx_manifest函数生成Puppet配置文件,并执行这些文件以完成部署的具体流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packstack总体流程分析(2)本文回答这两个问题:这些create_xxx_manifest是由哪里来调用的?/var/tmp/packstack/xxx/xxx.pp是如何被执行的? (1)各plugins中的create_xxx_mainfest是如何被调用的?def initPluginsSequences():

for plugin incontroller.getAllPlugins():

plugin.initSequences(controller)在initPluginsSequences中,会去调用所有plugins.xxx.py中的initSequences 其中plugin就是一个plugins.xxx.py文件,比如cinder_250.py,nova_300.py(2)某个plugin中的initSequences的一个例子:比如plugins/cinder_250.py中的initSequences:def initSequences(controller):

config = controller.CONF

if config['CONFIG_CINDER_INSTALL'] != 'y':

return

config['CONFIG_CINDER_BACKEND'] = (

[i.strip() for i in config['CONFIG_CINDER_BACKEND'].split(',') if i]

)

for key in ('CONFIG_CINDER_NETAPP_VOLUME_LIST',

'CONFIG_CINDER_GLUSTER_MOUNTS',

'CONFIG_CINDER_NFS_MOUNTS'):

if key in config:

config[key] = [i.strip() for i in config[key].split(',') if i]

cinder_steps = [

{'title': 'Adding Cinder Keystone manifest entries',

'functions': [create_keystone_manifest]}

]

if 'lvm' in config['CONFIG_CINDER_BACKEND']:

cinder_steps.append(

{'title': 'Checking if the Cinder server has a cinder-volumes vg',

'functions': [check_cinder_vg]})

cinder_steps.append(

{'title': 'Adding Cinder manifest entries',

'functions': [create_manifest]}

 

)

controller.addSequence("Installing OpenStack Cinder", [], [], cinder_steps)(3)functions的执行:生成/var/tmp/packstack/xxx/xxx.pp文件,即生成puppet文件def runSequences():controller.runAllSequences()如果function不是plugins.puppet_xxx.py中的,那么会调用create_xxx_manitest()生成host_ip_plugin.pp,比如192.168.129.130_cinder.pp如果function是plugins.puppet_xxx.py中的,那么会调用puppet apply来执行这些puppet,来做实际的部署工作。 (4)调用各plugins/xxx.py:create_xxx_manifest的流程生成puppet文件,以及这些puppet文件被最终执行的流程如下: installer.run_setup.py:main()->installer.run_setup.py:_main()->installer.run_setup.py:_main():initPluginsSequences()

->installer.run_setup.py: initPluginsSequences()

->plugins.cinder_xxx.py: initSequences()

->plugins.nova_xxx.py: initSequences()

->plugins.puppet_xxx.py:initSequences()->installer.run_setup.py:_main():runSequences()

->installer.setup_controller.py: runAllSequences()

->installer.core.sequences.py: Sequence.run()

->installer.core.sequences.py: Step.run()

->plugins.xxx.py:在initSequences中初始化的functions

->if not puppet_xxx.py:

->appendManifestFile:生成host_ip_cinder.pp,目录在/var/tmp/packstac/uuid/下

->if puppet_xxx.py:

-> plugins.puppet.initSequences()会将apply_puppet_manifest这一function加入到sequence中

-> plugins.puppet.apply_puppet_manifest()调用puppet apply,执行这些puppet脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值