salt-api介绍

  • saltsatck本身就提供了一套算完整的api,使用 CherryPy 来实现 restful 的 api,供外部的程序调用。
  • netapi模块提供了以API为中心的对salt的访问。通常是面向外部的服务,如REST或WebSockets、XMPP、XMLRPC等。通常,netapi模块绑定到端口并启动服务。它们是有目的的开放式的。一个模块可以配置为同时运行多个模块。通过将配置添加到salt主配置文件,然后启动salt api守护程序,可以启用netapi模块。检查每个模块的文档,查看外部需求和配置设置。

salt-api配置

利用api接口来实现SaltStack推送,管理集群是非常方便的手段,下面我们尝试利用API来实现Salt的功能

  1. 安装salt-api
[root@server1 ~]# yum install salt-api
  1. 配置自签名证书
[root@server1 ~]# cd /etc/pki/tls/private/
[root@server1 private]# openssl genrsa 1024
Generating RSA private key, 1024 bit long modulus
....................++++++
.....++++++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDXFnj/LN+7tw118LKMebKRLKvQUoDNznHMX8SzGEEznvuCnaFv
EoSHIYkya+a3tTtsAPLmWkz7JPKtYjYLmmB1xMc8o3i1MQsIg/kFpO5z85HYQkgS
DF6dkp5hznFgocqfo8UP1oCMGKaysWAdgR6PgOWhkNd3xM+UyYCRKWqt/QIDAQAB
AoGBALSsaOkYvbuGEaWPkbwUgh4WoyC0HQRENS1TCPzUE/kTw/u9A500teR5FDEp
mD2a3BZmWaOMGPwh1kQ0qmdmvzzDtGJfvAuqxXBtFEvklImjkbPx9z0Fqf038Dpx
BmzMZUOTkFuX4BtZUN3+X1N+xtG+kJ68eNSO5GBq2rKyh4y1AkEA8WCg2N6BWV0t
NfR0Ss93XxF82fEqbdBV7fjA3Eo3alZMAofHv/2zU0AParBlUCqsyrxliJ76HnWv
WAsU/3tuOwJBAOQeImHwBn1X2+XHjVzaduUJhclkxZWycMxNVmy71s5XGZ+mOQGS
kEIPCQbZ5dGfFg7CoV6cLX/q0vGI/XxZeScCQQCZQo1epgjjQPJP6+NbDNfymRv5
FdOm3j1xWBy8wrLk5d5lTOlb0i5mkao4R8BMYoxMPcsKMEcHyBmJgZ/Xh/u5AkAk
QknyyUUuzTVNu79TgAIf+7iBP3xMhBV709sl42GMYLnY74HmJxa4+UzVAvONszy9
UeB2elqdF4U6ES1Bg7NHAkEAvV+K4d7i6TVf5RjaGqhnJ45SMxl/F5y26SptqTaC
YESVM51tacg7t0AsiSemuR1qslvpbv36C/XtntWaZOUfZw==
-----END RSA PRIVATE KEY-----
[root@server1 private]# openssl genrsa 1024 > localhost.key
Generating RSA private key, 1024 bit long modulus
.........++++++
.......++++++
e is 65537 (0x10001)
[root@server1 private]# ls
localhost.key
[root@server1 private]# cd ..
[root@server1 tls]# cd certs
[root@server1 certs]# make testcert
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt -set_serial 0
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:xy
Organizational Unit Name (eg, section) []:aq
Common Name (eg, your name or your server's hostname) []:gq
Email Address []:root@localhost
  1. cd /etc/salt
    vim master #发现只支持以.conf结尾的文件
  2. 编辑api.conf和auth.conf
[root@server1 certs]# cd /etc/salt/master.d/
[root@server1 master.d]# vim api.conf
rest_cherrypy:port: 8000ssl_crt: /etc/pki/tls/certs/localhost.crtssl_key: /etc/pki/tls/private/localhost.key[root@server1 master.d]# vim auth.conf
external_auth:pam:saltapi:- .*
  1. 创建用户并设置密码
[root@server1 master.d]# useradd saltapi
[root@server1 master.d]# passwd saltapi
Changing password for user saltapi.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
  1. 打开salt-api,重启salt-master,并查看是否监听8000端口
[root@server1 master.d]# systemctl start salt-api
[root@server1 master.d]# systemctl restart salt-master
[root@server1 master.d]# netstat -antlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      16105/python
tcp        0      0 127.0.0.1:53490         127.0.0.1:8000          TIME_WAIT
  1. 下面的测试用的是curl做的,线上环境调用的话,肯定不能这么搓,可以用python的urllib2 。

登录,然后获取token

[root@server1 master.d]# curl -sSk https://localhost:8000/login -d username=saltapi -d password=westos -d eauth=pam
{"return": [{"perms": [".*"], "start": 1561127948.558212, "token": "9479264000d70acc2eb63fb554853a57ade9604d", "expire": 1561171148.558213, "user": "saltapi", "eauth": "pam"}]}
  • 测试
    利用token号测试四台minion是否通
[root@server1 master.d]# curl -sSk https://localhost:8000 -H 'Accept: application/x-yaml' -H 'X-Auth-Token:9479264000d70acc2eb63fb554853a57ade9604d' -d client=local -d tgt='*' -d fun=test.ping
return:
- server1: falseserver2: trueserver3: trueserver4: false

saltstack的NETAPI接口详讲相关推荐

  1. 【java8新特性】——lambda表达式与函数式接口详解(一)

    一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...

  2. 微信机器人网页版接口详解

    微信网页版接口详解 本系列会讲述微信机器人技术的实现,第一讲主要了解微信网页版给我们提供的http接口,这一步是做一个基于微信网页版机器人的基础和难点. 本讲将微信网页版的主要接口罗列出,并给出了入参 ...

  3. Java接口 详解(二)

    上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用-工厂设计模式(Factory) 我们先看一个范例: package com. ...

  4. DP/HDMI/DVI显示器接口详解

    DP/HDMI/DVI接口区别 目前游戏竞技玩家,专业制图用户越来越多,这就导致了各大应用设备也不断的提高.用户对画面显示效果也同样高了不少,特别是影音用户和游戏玩家,他们对画质的要求要求都非常高,就 ...

  5. Python的C语言接口 - 详解官方文档

    Python的C语言接口 - 详解官方文档 索引 Python的C语言接口 - 详解官方文档 介绍 / Introduce 代码标准 / Coding Standards 包含文件 / Include ...

  6. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  7. 网络流题目详讲+题单(提高版)(持续更新中......)

    网络流题目详讲+题单(提高版)(持续更新中......) 标签:图论--网络流 PS:如果你觉得自己还不够强(和我一样弱),可以去入门版看看 阅读体验:https://zybuluo.com/Junl ...

  8. html5硬件接口,HTML5通用接口详解

    1.先说几个基本类型: DOMString, boolean, long, unsigned long, double,BmBHTML5中文学习网 - HTML5先行者学习网 NaN(Not-a-Nu ...

  9. Spring使用IOC容器创建对象及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext接口详解

    IOC容器创建对象及接口详解 引言 类的建立 配置文件 IOC创建对象 运行结果 接口详解 (1)接口一`ClassPathXmlApplicationContext` (2)接口二:`FileSys ...

最新文章

  1. Javascript字符串的格式化
  2. Docker容器相关命令
  3. 轻松实现Access数据导入Oracle!
  4. Android调用相机拍摄照片并显示到 ImageView控件中
  5. 实现android应用程序自动化测试的批处理脚本,简单入手移动端并发自动化测试:Appium+Robot+ 批处理脚本...
  6. android studio提示要重写的方法,Android Studio 重写方法时参数命名异常
  7. think php上传图片,上传 · ThinkPHP5.0完全开发手册 · 看云
  8. lduan SCOM 2012 Web控制台(十五)
  9. 数据分析法、数据分析方法论总结
  10. C++ 学生信息管理程序练习
  11. [HSI论文阅读] | HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification
  12. 解决 openwrt/Lede pppoe拨号频繁掉线的问题
  13. vue导出excel加一个进度条_vue项目中如何把数据导出成excel文件
  14. Java 获取当前年 、当前月
  15. linux ssh 远程浏览器,使用浏览器通过ssh连接linux方法
  16. 土壤微生物组——从宏基因组学到宏表型组学
  17. Python Replace函数升级版
  18. 系统可靠性设计(系统架构师)
  19. (转)《黑客帝国完全解析》
  20. android 抽屉,凌乱了 Android的抽屉到底要不要?

热门文章

  1. 面向对象的正式与非正式解释!
  2. 细菌(disease)解题报告 - 搜索与回朔
  3. python中randint是什么意思_python中random.randint和random.randrange的区别详解
  4. 前后端分离研究,以及接口规范
  5. 用计算机弹出美妙的歌,计算器弹音乐 大家给点流行歌乐谱吧,谢谢大家
  6. RESTful的特点分析
  7. docker 搭建私有仓库registry (多用户)
  8. Alexnet网络模型在cifar-10数据集上的实现(基于tensorflow-gpu)
  9. 事件坐标:screenX,clientX,pageX,offsetX的区别
  10. 微信小程序简单获取当前时间及日期