码迷,mamicode.com
首页 > Windows程序 > 详细

salt的api学习记录---minion的启动流程

时间:2014-09-10 19:39:31      阅读:424      评论:0      收藏:0      [点我收藏+]

标签:start   saltstack   zeromq   zmq   salt-minion   

最近在看minion的启动的源代码,一路曲折啊,经过一番努力,终于理解了流程。现在记录下,方便以后查阅。


总体来说流程如下:

1、解析命令行参数和minion配置文件,得到options和config字典

2、设置日志(salt.log.setup.setup_logfile_logger负责)

3、设置pidfile

4、根据master参数决定调用salt.minion.MultiMinion或者salt.minion.Minion初始化

5、调用tune_in方法


解析命令行参数和配置文件调用的是salt.Minion,这个类极其复杂,使用了高级概念元类,多重继承。我看的时候特别晕,只是理解了大概。

对应文件是salt/__init__.py,这个文件中的Minion类是salt.utils.parsers.MinionOptionParser的子类。

下面代码对应文件是salt/utils/parsers.py。

class MinionOptionParser(MasterOptionParser):

    __metaclass__ = OptionParserMeta # 元类

    description = (
        ‘The Salt minion, receives commands from a remote Salt master.‘
    )    

    # ConfigDirMixIn config filename attribute
    _config_filename_ = ‘minion‘
    # LogLevelMixIn attributes
    # LOGS_DIR = ‘/var/log/salt‘
    _default_logging_logfile_ = os.path.join(syspaths.LOGS_DIR, ‘minion‘)

    # 设置self.config字典的
    def setup_config(self):
        return config.minion_config(self.get_config_file_path(),
                                    minion_id=True)


设置日志,调用的是salt.log.setup.setup_logfile_logger函数,主要是设置handler,loglevel,formatter。用到的是logging模块。对应的文件是salt/log/setup.py


初始化是一般调用的是salt.minion.Minion,如果设置的多个masters,则会调用salt.minion.MultiMinion。这里以salt.minion.Minion讲解过程。对应文件是salt/minion.py

salt.minion.Minion初始化过程如下:

1、验证ZMQ的版本

2、获取grains

3、向ret端口发送验证请求,获取master的aes和pub端口

4、获取pillar数据

5、装载可用的minion模块和returners

6、设置schedule


获取grains数据主要调用的是salt.loader.grains,这个方法会间接去调用salt.loader.Loader类,对应文件是salt/loader.py,这个是调用imp模块加载模块的。

获取pillar数据主要调用的是salt.pillar.get_pillar,对应文件是salt/pillar/__init__.py。

后期会针对pillar和grains的获取详细介绍下,或者看看saltstack中国用户组的介绍。


tune_in的这个方法属于salt.minion.Minion的。流程如下:

1、获取pub和pull的地址,默认是文件,通过ipc通信

2、绑定pub和pull

3、创建sub socket连接master的pub地址并保持长连接

4、执行死循环,触发event


这里只是大概的记录下流程,写的不怎么详细,还请大家海涵。

接下来的任务就是研究salt-minion去处理一个job的流程。


参考:

http://www.saltstack.cn/projects/cssug-kb/wiki/Salt-zeromq-01

http://www.saltstack.cn/projects/cssug-kb/wiki/Salt-pillar-01

http://devopstarter.info/yuan-ma-jie-du-saltstackyun-xing-ji-zhi-zhi-job-runtime/

本文出自 “fly天地” 博客,请务必保留此出处http://liuping0906.blog.51cto.com/2516248/1550632

salt的api学习记录---minion的启动流程

标签:start   saltstack   zeromq   zmq   salt-minion   

原文地址:http://liuping0906.blog.51cto.com/2516248/1550632

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!