saltstack API(一) 安装并测试
python3 安装api
# 首先安装python3 tar zxvf Python-3.5..tgz
cd Python-3.5.
. ./configure
make
make install
mv /usr/bin/python /usr/bin/python2 # 如果是软连接,可以直接删除
ln -s /usr/local/bin/python3. /usr/bin/python
vim /usr/bin/yum # 修改Yum,使yum依然有效,yum依靠老版本的python
#!/usr/bin/python 修改为#!/usr/bin/python2 # 修改完/usr/bin/yum 依然还有问题,可以尝试修改/usr/libexec/urlgrabber-ext-down的文件python抬头 # 使用Python3直接启动salt,因为默认环境已经切换的python3, 所以直接启动即可
systemctl start salt-master
systemctl start salt-minion
systemctl start salt-api #如果有问题可执行
apt-get install python3-dev
python3 -m pip install salt==2017.7.
安装配置api
[root@k8s_master ~]# pip install pyopenssl #安装依赖包
[root@k8s_master ~]# yum install salt-api #安装api服务
[root@k8s_master ~]# useradd username && echo password | passwd --stdin $username #添加用户
[root@k8s_master ~]# salt-call --local tls.create_self_signed_cert #生成key,默认目录/etc/pki/tls/certs
[root@k8s_master ~]# vi /etc/salt/master
rest_cherrypy:
port: #api端口
debug: True
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/certs/localhost.key
external_auth:
pam: #采用linux自带的加密方式
saltapi: #之前添加的用户名
- .* #主机组
- '@wheel' #所需要调用的模块(如,cmd.*,file.*),这里表示所有权限
- '@runner'
[root@k8s_master ~]# service salt-api start
[root@k8s_master ~]# service salt-master restart
另一种配置方法
# 添加配置文件,可以把eauth.conf和api.conf合二为一为api.conf
[root@centos7 ~]# mkdir -p /etc/salt/master.d/
# 这个目录默认不存在,需要手动创建,在/etc/salt/master主配置文件中有指定,类似include [root@centos7 ~]# vim /etc/salt/master.d/eauth.conf # 处于安全因素,一般只给特定模块的使用权限,这里给saltapi用户所有模块的使用权限
external_auth:
pam:
saltapi:
- .*
- '@wheel'
- '@runner'
[root@k8s_master ~]# vim /etc/salt/master.d/api.conf
rest_cherrypy:
port: #salt-api 监听端口
ssl_crt: /etc/pki/tls/certs/localhost.crt #ssl认证的证书
ssl_key: /etc/pki/tls/private/localhost_nopass.key
salt-api 配置文件详解
# salt-api 配置文件详解
port : #必须填写,salt-api启动的端口
host : #默认启动于0.0.0.0,可以不填写
debug : #默认为False,True开启后,会输出debug日志
log_access_file : #HTTP访问日志的路径,在2016..0版本添加的
log_error_file : #HTTP错误日志路径,在2016..0版本添加的
ssl_crt : #SSL证书的绝对路径
ssl_key: #SSK证书的私钥绝对路径
ssl_chain : #在使用PyOpenSSL时可选参数,将证书出递给' Context.load_verify_locations '
disable_ssl : #禁用SSL标识。认证证书将会被送进clear
webhook_disable_auth : False
webhook_url : /hook
thread_pool :
socket_queue_size :
expire_responses : True
max_request_body_size :
collect_stats : False
stats_disable_auth : False 更多详细参数请见:https://github.com/saltstack/salt/blob/develop/salt/netapi/rest_cherrypy/app.py
日志查看/var/log/salt/master 或者 salt-master -l debug
测试
[root@k8s_master ~]# netstat -ntlp|grep
[root@k8s_master ~]# curl -k https://192.168.132.148:8000/login -H "Accept: application/x-yaml" -d username='saltapi' -d password='saltapi' -d eauth=pam
return:
- eauth: pam
expire: 1509451924.783881
perms:
- .*
- '@wheel'
- '@runner'
start: 1509408724.78388
token: 1887a5cdc7b675687915fa9363a54ec8224d4282
user: saltapi
每重启一次,token就会改变
Api功能介绍
/login #登录
/logout #登出
/minions #获取minion信息或执行命令
/jobs #获取job信息(get)
/run #获取runner信息(POST)
/events #获取events 相关信息
/stats #获取api server相关信息
使用api
#salt "k8s_master" test.ping
[root@k8s_master ~]# curl -sSk https://192.168.132.148:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token:1887a5cdc7b675687915fa9363a54ec8224d4282" -d client=local -d tgt="k8s_master" -d fun=test.ping
return:
- k8s_master: true
#salt "k8s_master" cmd.run ifconfig
[root@k8s_master ~]# curl -sSk https://192.168.132.148:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token:1887a5cdc7b675687915fa9363a54ec8224d4282" -d client=local -d tgt="k8s_master" -d fun=cmd.run -d arg='ifconfig'
return:
- k8s_master: "docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500\n inet\
\ 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0\n ether :::ad:eb:\
\ txqueuelen (Ethernet)\n RX packets bytes (0.0 B)\n RX\
\ errors dropped overruns frame \n TX packets bytes (0.0\
\ B)\n TX errors dropped overruns carrier collisions \n\nens33:\
\ flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu \n inet 192.168.132.148\
\ netmask 255.255.255.0 broadcast 192.168.132.255\n inet6 fe80::c428::d920:d67\
\ prefixlen scopeid 0x20<link>\n ether :0c::c3:8a:0c txqueuelen\
\ (Ethernet)\n RX packets bytes (3.8 GiB)\n\
\ RX errors dropped overruns frame \n TX packets \
\ bytes (6.2 GiB)\n TX errors dropped overruns carrier\
\ collisions \n\nlo: flags=<UP,LOOPBACK,RUNNING> mtu \n inet\
\ 127.0.0.1 netmask 255.0.0.0\n inet6 :: prefixlen scopeid 0x10<host>\n\
\ loop txqueuelen (Local Loopback)\n RX packets bytes\
\ (5.3 GiB)\n RX errors dropped overruns frame \n\
\ TX packets bytes (5.3 GiB)\n TX errors \
\ dropped overruns carrier collisions "
[root@k8s_master ~]#
#salt 'k8s_master' state.sls ifconfig,执行ifconfig.sls
[root@k8s_master ~]# curl -sSk https://192.168.132.148:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token:1887a5cdc7b675687915fa9363a54ec8224d4282" -d client=local -d tgt="k8s_master" -d fun='state.sls' -d arg='ifconfig'
#salt -L 'ip1,ip2,ip3' test.ping
[root@k8s_master ~]# curl -sSk https://192.168.132.148:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token:1887a5cdc7b675687915fa9363a54ec8224d4282" -d client=local -d tgt="ip1,ip2,ip3" -d expr_form='list' -d fun='test.ping'
#slat -N 'master1' cmd.run ifconfig
[root@k8s_master ~]# curl -sSk https://192.168.132.148:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token:1887a5cdc7b675687915fa9363a54ec8224d4282" -d client=local -d tgt="master1" -d expr_form='nodegroup' -d fun='cmd.run' -d arg='ifconfig'
#以json格式输出
[root@k8s_master ~]# curl -sSk https://192.168.132.148:8000 -H "Accept: application/json" -H "X-Auth-Token:1887a5cdc7b675687915fa9363a54ec8224d4282" -d client=local -d tgt="k8s_master" -d fun='state.sls' -d arg='ifconfig'
参数解释:
client : 模块,python处理salt-api的主要模块,‘client interfaces <netapi-clients>’
local : 使用‘LocalClient <salt.client.LocalClient>’ 发送命令给受控主机,等价于saltstack命令行中的'salt'命令
local_async : 和local不同之处在于,这个模块是用于异步操作的,即在master端执行命令后返回的是一个jobid,任务放在后台运行,通过产看jobid的结果来获取命令的执行结果。
runner : 使用'RunnerClient<salt.runner.RunnerClient>' 调用salt-master上的runner模块,等价于saltstack命令行中的'salt-run'命令
runner_async : 异步执行runner模块
wheel : 使用'WheelClient<salt.wheel.WheelClient>', 调用salt-master上的wheel模块,wheel模块没有在命令行端等价的模块,但它通常管理主机资源,比如文件状态,pillar文件,salt配置文件,以及关键模块<salt.wheel.key>功能类似于命令行中的salt-key。
wheel_async : 异步执行wheel模块
备注:一般情况下local模块,需要tgt和arg(数组),kwarg(字典),因为这些值将被发送到minions并用于执行所请求的函数。而runner和wheel都是直接应用于master,不需要这些参数。
tgt : minions
fun : 函数
arg : 参数
expr_form : tgt的匹配规则
'glob' - Bash glob completion - Default
'pcre' - Perl style regular expression
'list' - Python list of hosts
'grain' - Match based on a grain comparison
'grain_pcre' - Grain comparison with a regex
'pillar' - Pillar data comparison
'nodegroup' - Match on nodegroup
'range' - Use a Range server for matching
'compound' - Pass a compound match string
saltstack API(一) 安装并测试的更多相关文章
- coreseek实战(一):windows下coreseek的安装与测试
coreseek实战(一):windows下coreseek的安装与测试 网上关于 coreseek 在 windows 下安装与使用的教程有很多,官方也有详细的教程,这里我也只是按着官方提供的教程详 ...
- SaltStack 介绍和安装
SaltStack 介绍和安装 SaltStack 介绍 SaltStack是一种利用Python语言开发的,用于批量管理主机的一套工具,主要实现三种功能: 远程执行:通过saltstack工具,可以 ...
- SaltStack之编译安装LNMP环境
使用saltstack编译安装LNMP环境 一,系统版本查看 二,安装salt-master和salt-minion 安装配置过程参考SaltStack概述及安装 三,修改配置文件 /etc/salt ...
- my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接
一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径“C:\Soft\mysql-5.6.24-winx64” 三.环境配置 计算 ...
- OpenCV2+入门系列(一):OpenCV2.4.9的安装与测试
这里假设看到这篇文章的人都已经对OpenCV以及机器视觉等最基础的概念有了一定的认识,因此本文不会对OpenCV做任何的介绍,而是直接介绍OpenCV2.4.9的安装与测试.此外本文只是简单的介绍如何 ...
- 决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试
决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试 [TOC] Apache ZooKeeper 单机模式安装 创建hadoop用户&赋予sudo权限, ...
- 用JSON-server模拟REST API(一) 安装运行
用JSON-server模拟REST API(一) 安装运行 在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要 ...
- Window下memcached安装与测试步骤
如何在Window下memcached安装与测试步骤 工具/原料 电脑 memcached 软件 方法/步骤 软件包下载 下载Memercached For Windows:http://downlo ...
- 【MySql】5.6.14版本的安装和测试
当前状态:apache2.4.6和php5.5.6已经安装成功: mysql的安装和测试: 一.安装mysql5.6.14,参考http://wenku.baidu.com/link?url=_0jk ...
随机推荐
- DRF 版本 认证
DRF的版本 版本控制是做什么用的, 我们为什么要用 首先我们要知道我们的版本是干嘛用的呢大家都知道我们开发项目是有多个版本的 当我们项目越来越更新~版本就越来越多我们不可能新的版本出了~以前旧的版本 ...
- Druid简单使用
一.添加maven依赖 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <depende ...
- Gedit浏览器常用快捷键备注
此处只记录常用的,而通常意义上的应知应会不做汇总 搜索 : Ctrl +F : 查找字符串 Ctrl + G : 查找字符串的下一实例 Ctrl + Shift + G : 查找字符串的前一实例 Ct ...
- thymeleaf手动映射根路径映射
到/src/java/resources/templates/index.html下 @RequestMapping("/") public String index(){ ret ...
- ajax 提交Dictionary
ajax向webapi提交Dictionary Script: var data = { "a": 1, "b": 2, "c": &quo ...
- Java json转model
前面有一篇关于 json的转换类的工具:http://blog.csdn.net/hanjun0612/article/details/77891569 但是有一个情况. 由于java需要属性小写开 ...
- springMVC整理04--文件上传 & 拦截器 & 异常处理
1. 文件上传 SpringMVC 的文件上传非常简便,首先导入文件上传依赖的 jar: <!-- 文件上传所依赖的 jar 包 --> <dependency> <g ...
- PSR-0 规范实例讲解 -- php 自动加载
PSR-0规范 [1]命名空间必须与绝对路径一致 [2]类名首字母必须大写 [3]除去入口文件外,其他“.php”必须只有一个类 [4]php类文件必须自动载入,不采用include等 [5]单一入口 ...
- 【LOJ#6073】距离(主席树)
[LOJ#6073]距离(主席树) 题面 LOJ 题解 两点间的距离是\(dep[x]+dep[y]-2dep[LCA]\). 那么题目要求的东西拆开维护,唯一不好做的就是\(2dep[LCA]\). ...
- Qt Creator 编译测试 MQTT-C
@2018-12-21 [小记] 创建工程步骤: a. File ---> New File or Project ---> Non-Qt Project ---> Plain C ...