网上找了很多文档都访问不了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-devel

shell> 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 sa

shell> 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

登陆获得Tokencurl -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脚本来访问APIimport json

import urllib

import 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()

linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想相关推荐

  1. pxe安装linux dhcp失败,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    原理有必要说明一下           (百度偷来的) 原理和概念: 1.1 什么是PXE 严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含 ...

  2. linux定时刷新命令结果,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    基本指令等: 部分快捷键: ctrl+c 强制结束当前运行程序,终止命令 ctrl+d 结束当前运行程序 先按ESC然后按. 或者同时按住ALT和. 则输入上一条命令的最后一个参数,与!$相同 Ctr ...

  3. linux基础知识全面总结,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    根据RH033课程整理而成. 12月19号 Lecture 10 进程:活体,程序的副本 定义:进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位.--<计算机操作系统> 进程的 ...

  4. linux vbox 不能使用scsi_id 查看uuid,51CTO博客-专业IT技术博客创作平台-技术成就梦想...

    今天在搭建RAC的时候,使用udev方式来创建ASM磁盘,执行/sbin/scsi_id命令不知道啥原因,死活获取不到UUID,执行结果啥也不显示. [root@seiang2 ~]# scsi_id ...

  5. linux主节点启动nfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    Windows系统之间下以实现文件和目录的共享,那么在linux系统下面是否也可以实现了,我们就测试一下: 在linux下面实现目录共享的软件是nfs 要配置nfs服务首先要配置rsh服务才可以,具体 ...

  6. linux grep 快速,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    什么是grep? grep (global search regular expression(RE) and print out the line,其全称意义为全局搜索正则表达式,并打印出来.是一种 ...

  7. linux httpd 域名映射,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    一.DNS服务器的设置 我们知道互联网网是基于TCP/IP协议的,要进行通信必须获得对方的IP地址,这是通过DNS服务器来实现的.因此要想实现虚拟域名首先应当令DNS 服务器接受该虚拟域名,即把它映射 ...

  8. linux实时备份,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    rsync缺点/不足: 1.rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分, ...

  9. linux使用grep数字个数,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    一.作业(练习)内容: 1.总结本此课程中所涉及命令的使用方法及相关示例展示: Linux文本处理三剑客: grep: 文本过滤工具: sed:文本编辑器(行):stream editor awk:文 ...

最新文章

  1. pandas重命名列名称、数据列名称重命名(Rename Column Names): rename、set_axis、df.columns
  2. 在IE7下使用Fiddler
  3. 实现Callable接口通过FutureTask包装器来创建Thread线程
  4. java oracle 视图不存在_Weblogic 10.3,JDBC,Oracle,SQL - 表或视图不存在
  5. Oracle图形化管理工具——OEM
  6. jsp脚本、jsp标准动作、EL表达式、JSTL标签
  7. Springboot2.0访问Redis集群
  8. 【C++】位运算实现加减乘除
  9. symfony app dev.php,Symfony 2:404未找到当tryes打开/app_dev.php时出错
  10. 网易2017春招笔试真题编程题集合
  11. Android setOnPageChangeListener 过时解决
  12. Hosts 文件切换工具
  13. 前端开发必须知道的JS(二) 闭包及应用
  14. Spring源码系列(十一)——Spring源码总结
  15. 19.4.17 javaScript基础 培训第三天
  16. 小型超市管理系统【软件工程大作业】
  17. FFmpeg+dxva2 H265硬解码 下方出现绿条或被下方拉长
  18. android自定义吸顶,Android ScrollView+ViewPager 固定顶部控件,自动吸顶效果
  19. 游标CURSOR的基本用法
  20. linux服务器挂载ntfs u盘,如何在linux下挂载NTFS格式的U盘或硬盘。

热门文章

  1. GitHub--创建新的分支
  2. 后端工程师面试BAT,被问到了前端?就倒下了?【VUE面试20连问】
  3. 说一下对象或数组转JSON怎么转【fastjson】
  4. Vue010_ 过滤器
  5. GitHub 配置 SSH 连接
  6. Hadoop 03_核心:读写流程
  7. git pull 卡在 Unpacking objects 解决方法
  8. leetcode 191. 位1的个数(移位操作)
  9. 【Python】Flask框架系列(二):安装、配置文件、增删改查
  10. 数据结构 - 链表 - 面试中常见的链表算法题