saltstack本身是用python写的,用python调用saltstack相对来说比较简单.
我这里采用的是第一种方法,但不同的是用tornado自封装了一层api
1. Python client API
http://docs.saltstack.com/en/latest/ref/clients/#salt.wheel.WheelClient.cmd
优点:
- 最简单,只要机器安装了saltstack,直接在python代码里
import salt
即可.
缺点:
- 只有python语言才能这样使用.
- 必须得与salt master部署在同一台机器.
- saltstack任务执行时,某些处理是在调用方进程里执行,这样意味调用方的必须与salt master同用户,否则到时会没有权限往
/var/cache/salt/master
目录写缓存文件. 比如salt master是root用户运行,那么django网站调用salt时也必须得也root用户运行.
2. salt api
https://salt-api.readthedocs.org/en/latest/
优点:
- 以 http rest api形式提供访问,这样什么语言都可以调用.
- 调用方可以不与salt master在同一机器.
- 调用方完全可用普通用户运行.
缺点:
- 需要自己对rest api做一次封装.
- 调用
salt.modules.cp.push
时,文件存放在 salt master上面.这个时候需要拿到文件必须得走NFS或自定义接口.
3. salt command
直接在程序里调用 salt 命令来执行任务