1.salt 命令的开始脚本 [[email protected] ~]# which salt /usr/bin/salt [[email protected] ~]# cat /usr/bin/salt #!/usr/bin/python2.6 ‘‘‘ Publish commands to the salt system from the command line on the master. ‘‘‘ from salt.scripts import salt_main if __name__ == ‘__main__‘: salt_main() 可以看到salt命令实际上是调用的是: salt.scripts文件中的salt_main()函数而已
2.salt_main函数如下
client = salt.cli.salt.SaltCMD() client.run() salt_main函数建立一个salt.cli.salt.SaltCMD实例client,然后执行该实例的run方法 run方法执行内容如下: self.parse_args() #解析命令行选项 local = salt.client.get_local_client(self.get_config_file_path(), skip_perm_errors=skip_perm_errors) 生成一个字典kwargs ;该字典稍后会作为参数传递给执行函数 以 salt ‘*‘ test.ping 为例 kwargs = { ‘tgt‘: ‘*‘, ‘show_timeout‘: True, ‘delimiter‘: ‘:‘, ‘expr_form‘: ‘glob‘, ‘timeout‘: 5, ‘arg‘: [], ‘fun‘: ‘test.ping‘, ‘show_jid‘: False } 执行: local.cmd_cli(**kwargs) 在看cmd_cli方法执行内容前,需看local实例具体做的那些事情
3.local = salt.client.get_local_client(self.get_config_file_path(),skip_perm_errors=skip_perm_errors)
执行内容:
local = salt.client.get_local_client(‘/etc/salt/master‘,False) salt.client.get_local_client 是一个函数,该函数返回LocalClient()实例
4.LocalClient 类实例化时
时间: 2024-10-10 07:29:51