我不清楚是否有人真的将他成功跑起来,但是我尝试使用uwsgi和apache的mod_wsgi都无法成功运行。作为一个有各种各样python框架丰富部署经验的人来说,都无法将它启动,并且它的代码很久没有更新,所以我认为它基本上是不可用的。 我fork了这个项目,使用tornado实现了一个与默认cherrypy实现大部分兼容的API。地址:https://github.com/vansention/salt-api 运行和调用 因为tornado的关系,运行它很简单,进入 salt-api/saltapi/netapi/rest_tornado/ python main.py -bind=0.0.0.0 -port=8000它需要安装tornado才能运行。 salt-api提供了PAM的方式进行认证和权限划分。关于PAM,请移步 这里 。 编辑 salt master 的配置文件 /etc/salt/master , 编辑 external_auth 那一部分,指定用户和他所拥有的权限。 external_auth: pam: saltuser: - 'grains.*' - 'state.*' - 'status.*'意思是,saltuser用户可以执行 grains,state,status 三个模块。 API 是通过cookie记录认证信息的,所以调用一定要保存cookie。 我们调用api的时候首先需要认证,发送请求给 /login % curl -si localhost:8000/login \\ -H "Accept: application/json" \\ -d username='saltuser' \\ -d password='saltpass' \\ -d eauth='pam'如果成功,返回类似是这样 {"return": { "token": "6d1b722e", "start": 1363805943.776223, "expire": 1363849143.776224, "user": "saltuser", "eauth": "pam", "perms": [ "grains.*", "status.*", "sys.*", "test.*" ] }}通过了认证,就可以直接发送lowstate来调用salt的各种功能了。 关于lowstate,请看这里 这里。 比如,我们实现类似于 salt EXAMPLE.COM test.ping通过API % curl -si https://localhost:8000 \\ -H "Accept: application/x-yaml" \\ -H "X-Auth-Token: d40d1e1e" \\ -d client=local \\ -d tgt='*' \\ -d fun='test.ping' \\ -d arg基本上,通过lowstate,就可以实现像本地操作salt一样实现各种调用。 转载请保留固定链接: https://linuxeye.com/program/1881.html |