直播课 1-27 saltstack-api

Saltstack的api

Salt-api有两种方式,一种是函数的形式,有人家定义好的函数,我们可以直接调用,直接写python代码调用函数或者类就可以了。
第二种形式是salt-api有封装好的http协议的,我们需要启动一个服务端。

安装:
yum install –y salt-api
加载master的配置文件
import  salt.config
master_opts = salt.config.client_config(‘/etc/salt/master’)
print(‘master_opts’) 
加载minion的配置文件
import salt.config
Minion_opts = salt.config.minion_config(‘/etc/salt/minion’)
在master上执行各种模块:
>>> import salt.client               
>>> local = salt.client.LocalClient(‘/etc/salt/minion’)#不加也可以,加上最好
>>> local.cmd('*', "test.ping")      
{'192.168.48.129': True}
>> local.cmd('*', "cmd.run", "w")
{'192.168.48.129': ' 12:17:38 up  5:58,  1 user,  load average: 0.00, 0.01, 0.05\nUSER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT\nroot     pts/0    192.168.48.1     11:14    2:50   0.89s  0.89s python'}

如果一次要执行多个模块

local.cmd('*', ['test.ping', 'cmd.run'], [[], ['whoami']])
{'192.168.48.129': {'test.ping': True, 'cmd.run': 'root'}}
自定义的模块:
>>> local.cmd('*', "jd.meminfo", "")
{'192.168.48.129': {'meminfo': '0.31'}}
异步执行

如果对于执行时间过长,没法直接返回的,我们就可以通过异步执行的形式进行返回

cmd_async和get_cache_returns(jid)
一下代码只能只能在master上执行,而且是只能在master上才可以使用

__opts__ = salt.config.minion_config('/etc/salt/minion')
conf_file = __opts__['conf_file']
client = salt.client.LocalClient(conf_file)jid = client.cmd_async(minion, function, params)wait_time = 0
sleep_interval = 1
while wait_time < timeout:    
    print('wait {0} seconds'.format(sleep_interval))    
    time.sleep(sleep_interval)   
    returns = client.get_cache_returns(jid)   
    if returns:       
        return returns   
    wait_time += sleep_interval
客户端执行salt命令:
>>> import salt.config
>>> import salt.client
>>> caller = salt.client.Caller(‘/etc/salt/minion’)
>>> caller.cmd("test.ping")
True

类似shell命令的salt-call,可以在minion端执行salt的命令,测试连通性什么的

Master端执行salt-run
>>> import salt.config                    
>>> import salt.runner
>>> __opts__ = salt.config.client_config('/etc/salt/master')
>>> runermaster = salt.runner.RunnerClient(__opts__) 
>>> runnerMaster.cmd('jobs.list_jobs', [])
查看所有的
>>>runnerMaster.cmd('manage.status')        
down:
up:
    - 192.168.48.129
{'down': [], 'up': ['192.168.48.129']}
Grains
>>> import salt.config
>>> import salt.loader
>>> __opts__ = salt.config.minion_config("/etc/salt/minion")
>>> __grains__ = salt.loader.grains(__opts__)
>>> __grains__['id']
'192.168.48.129‘
其他的一些变量
import salt.config
import salt.loader

__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
__opts__['grains'] = __grains__
__utils__ = salt.loader.utils(__opts__)
__salt__ = salt.loader.minion_mods(__opts__, utils=__utils__)
__salt__['test.ping']()
Salt的内置环境变量:

在python的交互环境中,这些变量是不生效的,只有在自定义的模块,活着salt执行时才生效

__opts__                配置文件,类型
__salt__            执行modules
__salt__['cmd.run']('fdisk -l')
__salt__['network.ip_addrs']()
__pillar__      pillar
__grains__      grains

__context__     
if not 'cp.fileclient' in __context__:
    __context__['cp.fileclient'] = salt.fileclient.get_file_client(__opts__)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值