1、salt.config.client_config(path, env_var='SALT_CLIENT_CONFIG', defaults=None)
功能:加载salt master配置文件
样例:master_opts = salt.config.client_config('/etc/salt/master')
2、salt.config.minion_config(path, env_var='SALT_MINION_CONFIG', defaults=None, cache_minion_id=False)
功能:加载salt minion端配置文件
样例:minion_opts = salt.config.minion_config('/etc/salt/minion')
3、salt模块装载器接口
功能:将salt 模块加载到内存中。每个salt模块都有一个专用的加载函数。
(1)加载执行模块
功能:通过评估每个模块中的__virtual __()函数来返回适用于当前系统的执行模块的字典。
salt.loader.minion_mods(opts, context=None, utils=None, whitelist=None, include_errors=False, initial_load=False, loaded_base_name=None, notify=False, static_modules=None, proxy=None)
样例:
import salt.config,salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
__opts__['grains'] = __grains__
__salt__ = salt.loader.minion_mods(__opts__)
__salt__['test.ping']()
(2)加载单个模块
并绕过__virtual__函数
salt.loader.raw_mod(opts, name, functions, mod='modules')
样例:
import salt.config,salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
testmod = salt.loader.raw_mod(__opts__, 'test', None)
testmod['test.ping']()
(3)加载状态模块
返回状态模块。
salt.loader.states(opts, functions, utils, serializers, whitelist=None)
样例:
import salt.config,salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
statemods = salt.loader.states(__opts__, None, None)
(4)加载grains模块
返回动态grains的功能和静态grains的值。
salt.loader.grains(opts, force_refresh=False, proxy=None)
样例:
import salt.config,salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
print __grains__['id']
(5)加载grains功能函数
salt.loader.grain_funcs
样例:
import salt.config,salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
grainfuncs = salt.loader.grain_funcs(__opts__)
4、Salt的客户端接口——LocalClient
class salt.client.LocalClient(c_path='/etc/salt/master', mopts=None, skip_perm_errors=False, io_loop=None)
在salt master上执行客户端管理命令的接口。
LocalClient用于向Salt minions发送一个命令来执行执行模块并将结果返回给Salt Master。
必须在与Salt Master相同的计算机上完成导入和使用LocalClient,并且必须使用与运行Salt Master的相同用户。
样例:
import salt.client
local = salt.client.LocalClient()
local.cmd('id', 'cmd.run', ['whoami'])
(1)cmd(tgt, fun, arg=(), timeout=None, expr_form='glob', ret='', jid='', kwarg=None, **kwargs)
在目标客户机上以同步的方式执行一个命令。
cmd方法将执行并等待所有客户机的超时时间回复,然后它将一次返回所有的数据。
重要参数:
tgt(字符串或列表) - 要执行的目标是哪些子节点。 默认是shell通配符。 可以由expr_form选项修改。
fun(字符串或字符串列表) - 在客户机上执行的模块与函数,例如test.ping或grains.items 。
expr_form -- 设定tgt的参数类型,支持的参数类型有:
glob - Bash glob completion - Default
pcre - Perl style regular expression
list - Python list of hosts
grain - Match based on a grain comparison
grain_pcre - Grain comparison with a regex
pillar - Pillar data comparison
pillar_pcre - Pillar data comparison with a regex
nodegroup - Match on nodegroup
range - Use a Range server for matching
compound - Pas
(2)cmd_async(tgt, fun, arg=(), expr_form='glob', ret='', jid='', kwarg=None, **kwargs)
在指定的客户机上以异步的形式执行一个命令。
该函数与cmd()的特性基本相同,仅有以下不同。
返回: A job ID or 0 on failure.
样例:
>>> local.cmd_async('*', 'test.sleep', [300])
'20131219215921857715'
(3)cmd_batch(tgt, fun, arg=(), expr_form='glob', ret='', kwarg=None, batch='10%', **kwargs)
一次只在符合匹配规则的目标客户机的一个子集中,执行指定的命令。
该函数与cmd()的特性基本相同,仅有以下差别。
参数: batch -- 要执行的系统的批量标识符
返回: A generator of minion returns
>>> returns = local.cmd_batch('*', 'state.highstate', bat='10%')
>>> for ret in returns:
... print(ret)
{'jerry': {...}}
{'dave': {...}}
{'stewart': {...}}
(4)cmd_iter(tgt, fun, arg=(), timeout=None, expr_form='glob', ret='', kwarg=None, **kwargs)
执行命令,然后对有结果返回的客户机收集其执行结果。
该函数与cmd()的特性基本相同,仅有以下差别。
返回: A generator yielding the individual minion returns
注:A generator object in python is something like a lazy list. The elements are only evaluated as soon as you iterate over them.
样例:
>>> ret = local.cmd_iter('*', 'test.ping')
>>> for i in ret:
... print(i)
{'jerry': {'ret': True}}
{'dave': {'ret': True}}
{'stewart': {'ret': True}}
(5)cmd_iter_no_block(tgt, fun, arg=(), timeout=None, expr_form='glob', ret='', kwarg=None, **kwargs)
执行命令,然后对有结果返回的客户机收集其执行结果,如果客户机没有返回结果则标记为None 。
该函数与cmd()的特性基本相同,仅有以下差别。
返回:返回一个生成器,对有结果返回的客户机收集其执行结果,如果客户机没有返回结果则标记为None 。这里允许在两个客户机返回结果之间注入特定的actions。
样例:
>>> ret = local.cmd_iter_no_block('*', 'test.ping')
>>> for i in ret:
... print(i)
None
{'jerry': {'ret': True}}
{'dave': {'ret': True}}
None
{'stewart': {'ret': True}}
(6)cmd_subset(tgt, fun, arg=(), expr_form='glob', ret='', kwarg=None, sub=3, cli=False, progress=False, **kwargs)
在目标系统的随机子集上执行命令
该函数与cmd()的特性基本相同,仅有以下差别。
参数: sub -- The number of systems to execute on
样例:
>>> SLC.cmd_subset('*', 'test.ping', sub=1)
{'jerry': True}
(7)get_cli_returns(jid, minions, timeout=None, tgt='*', tgt_type='glob', verbose=False, show_jid=False, **kwargs)
启动观察者以查看指定JID的返回数据。
返回: all of the information for the JID
(8)get_event_iter_returns(jid, minions, timeout=None)
从事件系统收集返回数据,达到超时时会强制中断。
(9)run_job(tgt, fun, arg=(), expr_form='glob', ret='', timeout=None, jid='', kwarg=None, **kwargs)
异步发送一个命令给连接着的客户机。准备作业目录并向任何目标客户机都发布一个命令。
返回:
一个可验证的pub_data字典或失败的空字典。 pub_data包含作业ID和预期返回数据的所有客户机列表。
样例:
>>> local.run_job('*', 'test.sleep', [300])
{'jid': '20131219215650131543', 'minions': ['jerry']}