57. Python saltstack 二次开发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了57. Python saltstack 二次开发相关的知识,希望对你有一定的参考价值。
回顾上一节:
grains 和 pillar 都是定义他们的属性的
grains 定义在minion端(定义完必须重启minion,才能生效)
pillar 定义在master端(无需重启即可生效)
saltstack的api
Salt-api有两种方式:
第一种:是函数的形式,有人家定义好的函数,我们可以直接调用,直接写python代码调用函数或者类就可以了。
第二种:形式是salt-api有封装好的http协议的,我们需要启动一个服务端。
登录官网查看文档:
文档内容,如下:
安装salt-api:
yum install –y salt-api
1.加载master的配置文件
import salt.config master_opts = salt.config.client_config('/etc/salt/master') print('master_opts')
master端,如果想查看配置文件的参数属性:
2. 加载minion的配置文件
import salt.config minion_opts = salt.config.minion_config('/etc/salt/minion') print ('minion_opts')
minion端,想看配置文件内的参数属性:
3. 在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 [email protected] 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'}}
【test.ping 对应 [](空列表),cmd.run 对应 whoami 命令】
另一种方式:(不推荐这样用,还不如调两次,这样逻辑性不好)
>>> local.cmd('*', ['test.ping', 'cmd.run'], [[], ['w; df -h']])
自定义的模块:
模块目录必须创建:
mkdir -p /srv/salt/_modules cd /srv/salt/_modules
创建 jd.py 文件:
vim jd.py
#!/usr/bin/python #coding:utf-8 def hello(name): return {"name": name}
写完所有module要记得同步一下:
salt '*' saltutil.sync_all #同步所有
或者
salt '*' saltutil.sync_modules #只同步modules
执行命令获取结果:
# salt '*' jd.hello ajing
结果输出,如图:
python中这样获取:
以上是关于57. Python saltstack 二次开发的主要内容,如果未能解决你的问题,请参考以下文章