Salt-api学习笔记一

网上找了很多文档都访问不了salt-api,搞了好半天,终于弄好了,写个笔记,方便以后查询

如果需要通过第三方来调用SaltStack时,使用SaltStack自带的Python API并不能很好的满足需求。可以通过使用SaltStack基于RESTful风格的HTTP API。该API模块并不是内置的,需要单独安装。

Salt REST API简介

这里简单的说明下,SaltStack官方支持三种REST API,分别是rest_cherry; rest_tonado和rest_wsgi

  • rest_cherry和rest_tonado两个模块支持监听所有IP的指定端口接收请求
  • rest_wsgi只支持本机访问,只绑定了127.0.0.1

安装Salt-API服务

shell> yum -y install gcc make python-devel libffi-develshell> pip install pyOpenSSL==0.15.1

借助salt工具来生成证书

shell> salt-call --local tls.create_self_signed_cert

salt-call是salt-minion的工具,如果没有这个命令,可以在master端安装minion,然后再执行以上命令


配置用户及权限

shell> useradd -M -s /sbin/nologin sashell> echo "sapassword" | passwd sa --stdin

在salt-master的配置文件最后添加如下配置

external_auth:  pam:  #认证模式,pam指的是用Linux本身的用户认证模式    sa:  #Linux系统中真实存在的用户名      - ‘*‘:  #设置用户的权限,允许该用户操作哪些主机,*代表全部        - test.*  #允许操作的模块及方法        - cmd.*

配置salt-api服务

在salt-master的配置文件最后添加如下配置

rest_cherrypy:  port: 1559  #默认监听所有IP的1559端口  ssl_crt: /etc/pki/tls/certs/localhost.crt  #引用的正是前面创建的证书  ssl_key: /etc/pki/tls/certs/localhost.key

启动服务

shell> service salt-api start

登陆获得Token

curl -sSk https://www.20150509.cn:1559/login \    -H ‘Accept: application/x-yaml‘ \    -d username=sa \    -d password=sapassword \    -d eauth=pam

复制得到的Token

curl -sSk https://localhost:8000 \    -H ‘Accept: application/x-yaml‘ \    -H ‘X-Auth-Token: 697adbdc8fe971d09ae4c2a3add7248859c87079‘\    -d client=local \    -d tgt=‘*‘ \    -d fun=test.ping

使用Python脚本来访问API

import jsonimport urllibimport urllib2

 #在python2.6x中,以下两行不是必须的import ssl ssl._create_default_https_context = ssl._create_unverified_context

url=‘https://www.20150509.cn:1559‘  #salt-api所在的“坐标”

def test():  pre_data = [{"client":"local", "tgt":"*", "fun":"test.ping"}]   #根据上面官方文档的要求组成数组嵌套字典的形式  json_data = json.dumps(pre_data)    #将其转化为json格式    header = {"Content-Type":"application/json", "Accept":"application/json", "X-Auth-Token":"697adbdc8fe971d09ae4c2a3add7248859c87079"}  #这里说明下,Content-Type是声明传递给API的数据是什么格式的,这里指定了json,是因为上面的pre_data数据被我转化成了json格式  #Accept是声明返回结果以什么样的格式显示,这里也指定了json格式来显示返回结果

  request = urllib2.Request(url, json_data, header)    #构造一次请求  response = urllib2.urlopen(request)    #构造一次HTTP访问

  html = response.read()  print html

if __name__=="__main__":  test()
时间: 2024-08-12 09:33:57

Salt-api学习笔记一的相关文章

TCP协议和socket API 学习笔记

本文转载至 http://blog.chinaunix.net/uid-16979052-id-3350958.html 分类: 原文地址:TCP协议和socket API 学习笔记 作者:gilbertjuly  • TCP包头 ACK为1时,确认序号有效,表示期望收到的下一个序号,是上次成功收到的字节序加1. SYN, FIN都占用一个序号. • TCP连接的建立 client通过connect()来建立TCP连接,connect()会发送SYN报文: server通过bind().list

Windows录音API学习笔记--转

Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { WORD      wMid; 用于波形音频输入设备的设备驱动程序制造商标识符. WORD      wPid; 声音输入设备的产品识别码. MMVERSION vDriverVersion; 用于波形音频输入设备的设备驱动程序的版本号.高位字节是主版本号,低字节是次版本号. CHAR      szPname[MAXPNAMELEN];

Windows录音API学习笔记(转)

源:Windows录音API学习笔记 Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { WORD      wMid; 用于波形音频输入设备的设备驱动程序制造商标识符. WORD      wPid; 声音输入设备的产品识别码. MMVERSION vDriverVersion; 用于波形音频输入设备的设备驱动程序的版本号.高位字节是主版本号,低字节是次版本号. CHAR      sz

Jquery API学习笔记

学习网站 : http://www.jquery123.com/ 学习一遍API可以更熟练的运用jquery并且拓展思路. 这里只挑选了一些我认为有用的API,并不是全部的API. .add("p")         匹配元素后添加元素 .addClass("类名")   匹配元素添加样式 .after('<p></p>')     匹配元素后外添加HTML .animate({},2000)     匹配元素根据css执行一组动画,时间 .

ASP.NET MVC Web API 学习笔记---Web API概述及程序示例

1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScript来创建更丰富的HTML体验.所以我相信Web API会越来越有它的用武之地. 说道Web API很多人都会想到Web服务,但是他们仍然有一定的区别:Web API服务是通过一般的 HTTP公开了,而不是通过更正式的服务合同 (如SOAP) 2. ASP.NET W

ASP.NET MVC Web API 学习笔记---第一个Web API程序

http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScript来创建更丰富的HTML体验.所以我相信Web API会越来越有它的用武之地. 说道Web API很多人都会想到Web服务,但是他们仍然有

Node.js API学习笔记(一)

此文章已经发表于本人博客. Terminal(终端) 说起这个使用过linux系统的兄台一般都会知道的,本人理解:类似Putty这些ssh工具通过 软件来实现远程控制主机,对于我们使用者来说,它会显示信息并能接收信息并处理,这个东东就是终端.至于什么伪终端应该就是用软件实现使一套输入输出设备 可以支持多个软终端. 这里说下node.js中有关的终端模块3个,分别是:STDIO.TTY.REPL. 一.STDIO 如果我没理解错控制台应该是属于noddjs标准的输入输出,一般把信息输出到stdou

Node.js API学习笔记(二)

本文发表于本人博客. 上一节笔记说到创建Buffer实例,这节继续讲Buffer.本节讲解下Buffer的一些静态方法.写入以及读取方法. Buffer.isEncoding(编码)判断nodejs是否支持此编码 console.log(Buffer.isEncoding("gb2312"));//不管过程怎么node都不支持这个编码,死记 console.log(Buffer.isEncoding("utf8")); //true console.log(Buff

【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序

1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScript来创建更丰富的HTML体验.所以我相信Web API会越来越有它的用武之地. 说道Web API很多人都会想到Web服务,但是他们仍然有一定的区别:Web API服务是通过一般的 HTTP公开了,而不是通过更正式的服务合同 (如SOAP)  2. ASP.NET

【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系人 说明:为了方便数据不使用真正的数据库,而是通过内存数据模拟 1.       Web API中包含的方法 Action HTTP method Relative URI GetAllContact GET /api/contact GetContact GET /api/contact /id