saltstack本身是用python写的,用python调用saltstack相对来说比较简单.

个人想到的调用方式有下:

1. Python client API

http://docs.saltstack.com/en/latest/ref/clients/#salt.wheel.WheelClient.cmd

优点:

  1. 最简单,只要机器安装了saltstack,直接在python代码里 import salt 即可.

缺点:

  1. 只有python语言才能这样使用.
  2. 必须得与salt master部署在同一台机器.
  3. saltstack任务执行时,某些处理是在调用方进程里执行,这样意味调用方的必须与salt master同用户,否则到时会没有权限往 /var/cache/salt/master 目录写缓存文件. 比如salt master是root用户运行,那么django网站调用salt时也必须得也root用户运行.

2. salt api

https://salt-api.readthedocs.org/en/latest/

优点:

  1. 以 http rest api形式提供访问,这样什么语言都可以调用.
  2. 调用方可以不与salt master在同一机器.
  3. 调用方完全可用普通用户运行.

缺点:

  1. 需要自己对rest api做一次封装.
  2. 调用 salt.modules.cp.push 时,文件存放在 salt master上面.这个时候需要拿到文件必须得走NFS或自定义接口.

3. salt command

直接在程序里调用 salt 命令来执行任务

优点:

  1. 简单粗暴

缺点:

  1. 需要自己解决命令执行结果,出错处理太难.