python调用saltstack的几种方式
saltstack本身是用python写的,用python调用saltstack相对来说比较简单.
个人想到的调用方式有下:
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 命令来执行任务
优点:
- 简单粗暴
缺点:
- 需要自己解决命令执行结果,出错处理太难.