Saltstack的API接口与调用方式

 saltstack看起来是成为一个大规模自动化运维和云计算管理的一个框架,类似于SDK,并不是像puppet仅仅成为一个工具.基于良好设计的API和清楚的思路,让salt的二次开发变得很简单.写很少的代码就可以将salt跟现有的运维系统结合.saltstack是用python语言实现的,如果对saltstack本身进行二次开发,就必须得会python语言. Saltstack是通过多个独立的模块构成的,这些都可以当做saltstack的api.然后在上层做基础开发可以通过调用这些saltstack的api的模块进行.通过在python中import引入对应的api模块实现要实现的功能即可,然后写自己对应的需求代码.简单案例:调用saltstack的api模块.因为saltstack使用python语言实现,而python自带的shell跟ubuntu自带默认的vi编辑器一样比较痴呆,所以先安装ipython,作为开发python的帮助利器.ipython是一个python的交互式shell,功能强悍.跟ubuntu安装其他软件一样Sudo apt-getinstall ipython 就可以安装. 安装完毕后,进入ipython操作界面,然后通过ipython的补全功能,看看salt的模块如下:这里以salt.client为例子,说明一下对saltstack的api的调用.首先进入ipython的界面,importsalt.client     (引入salt.client的模块)Client = salt.client.LocalClient()  (LocalClient是底层定好好的一个类.)Ret = client.cmd(‘1st’, ‘cmd.run’,[‘hostname’])Ret即可回显出1st控制端的hostname的值.详细的client模块的函数介绍参考:http://docs.saltstack.com/ref/clients/index.html#client-apis然后其他像salt.grains模块,就是收集信息模块.像引入grains模块后,Import salt.grains.core然后就可以调用其function函数.Salt.grains.core.ip4()    (这个是回显ip地址信息,由函数名就可以推断出来的)Salt-api为了迅速集成saltstack到第三方系统中,官方提供了salt-api模块.Salt-api是作为saltstack的一个模块接口,它能够提供一系列的接入运行saltstack系统的接口.当saltstack需要与第三方系统集成的时候,这时候就需要salt-api来进行中间的连接介入.Salt-api作为一个模块接口,所以首先是要进行安装配置的.首先安装好salt-api在salt-master服务端.然后配置salt-master的配置文件,把运行salt-api的模块启用.再安装好salt-api所需的动态链接库或者你要运行的软件.最后启动salt-api,并且重启所有的配置.在配置salt的master文件时候,不同的软件,所需要配置的选项不同.在master的配置文件中,其中salt-api提供了PAM的方式进行认证和权限划分,编辑 salt master 的配置文件 /etc/salt/master , 编辑 external_auth 那一部分,指定用户和他所拥有的权限. API 是通过cookie记录认证信息的,所以调用一定要保存cookie,我们调用api的时候首先需要认证,发送请求给 /login.简单案例: 这里以tornado这个web服务器作为演示例子.因为这个是支持python语言的服务器.首先看官网,在ubuntu下安装好tornado.然后跑起来.讲的很明白,但是细节要靠自己摸索.地址http://opython.com/还是按照官网给的demo演示salt-api的调用. saltstack官方有个webui 叫 halite ,一个在页面执行管理的ui.后端用的是salt-api .官网介绍: http://salt-api.readthedocs.org/en/latest/.但是这个最后发现更让人晦涩,而且里面要求的配置文件,根本找不到.总结通过这几天的学习,查找资料.自己总结为saltstack的api接口调用是比较方便的,网上资料很少,而且官网的salt-api的例子讲的比较笼统,网上的例子是有结合第三方的程序通过salt-api接入saltstack中.个人总结:saltstack本来就是一个开源的程序,所以其底层代码是透明的,所以可以直接引入saltstack的api的模块进行对应的开发.但是前提是了解对应的api的功能,可以不必深究底层代码类如何实现,但是只要知道function功能就可以啦.但是一般开发中,应该都不是直接对saltstack的api调用,而是通过salt-api作为一个统一的接口接入.salt-api提供saltstack的所要的各种api接口.关于对saltstack的api的接口与调用方式,这些就是自己看资料综合整理的.但是中间出了很多问题,网上找不到答案的问题.就只能自己揣测.官网上讲的很简单,而且看不很明白.反正总而言之,saltstack的api接口是以各种模块的形式提供出来,可供python来使用,做开发.然后就是salt-api作为一个独立的接入模块,相当于一个SDK的环境,大大简化saltstack集成到现有的运维环境中去.  

你可能感兴趣的:(Saltstack的API接口与调用方式)