Python3使用saltstack和salt-api

安装python3

    1. tar zxvf Python-3.5.1.tgz
2. cd Python-3.5.1
3. ./configure
4. make
5. make install
6. mv /usr/bin/python /usr/bin/python2 # 如果是软连接,可以直接删除
7. ln -s /usr/local/bin/python3.5 /usr/bin/python
8. vim /usr/bin/yum # 修改Yum,使yum依然有效,yum依靠老版本的python
9. #!/usr/bin/python 修改为#!/usr/bin/python2 # 修改完/usr/bin/yum 依然还有问题,可以尝试修改/usr/libexec/urlgrabber-ext-down的文件python抬头

安装 salt-api

yum install salt-api -y

配置

生成自签名证书(用于ssl)
cd  /etc/pki/tls/certs
# 生成自签名证书, 过程中需要输入key密码及RDNs
make testcert
cd /etc/pki/tls/private/
# 解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码
openssl rsa -in localhost.key -out localhost_nopass.key
创建用于salt-api的用户
useradd -M -s /sbin/nologin salt-api
echo "salt-api" | passwd salt-api —stdin
修改/etc/salt/master文件
sed -i '/#default_include/s/#default/default/g' /etc/salt/master
mkdir /etc/salt/master.d
新增配置文件/etc/salt/master.d/api.conf
cat /etc/salt/master.d/api.conf
rest_cherrypy:
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/private/localhost_nopass.key
新增配置文件/etc/salt/master.d/eauth.conf
cat /etc/salt/master.d/eauth.conf
external_auth:
pam:
salt-api:
- .*
- '@wheel'
- '@runner'
启动salt-master and salt-api
systemctl start salt-master
systemctl start salt-api
安装一个salt client
yum install salt-minion -y
修改配置
sed -i "/^#master: salt/c master: 192.168.104.76" /etc/salt/minion
启动 client
systemctl start salt-minion
master 上接受key
[root@node76 salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
node76
Rejected Keys:
[root@node76 salt]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
node76
Proceed? [n/Y] Y
Key for minion node76 accepted.
[root@node76 salt]# salt-key -L
Accepted Keys:
node76
Denied Keys:
Unaccepted Keys:
Rejected Keys:

api使用

使用curl 获取token
 curl -k https://192.168.104.76:8000/login -H "Accept: application/x-yaml"  -d username='salt-api' -d password='salt-api'  -d eauth='pam'
return:
- eauth: pam
expire: 1520269544.2591
perms:
- .*
- '@wheel'
- '@runner'
start: 1520226344.259099
token: 593a7224f988f28b84d58b7cda38fe5e5ea07d98
user: salt-api
参数解释:
--sslv3 指定sslv3版本
-k 忽略证书获取https内容
-s 指定使用静默(silent)方式
-i 指定SaltAPI收到服务器返回的结果同时显示HTTP Header。
-H 指定一个特定的Header给远端服务器,当SaltAPI 需要发送appliton-tion/json Header时。会以我们希望的JSON格式返回结果
-d 想远端服务器发送POST请求,以key=value的格式发送 ,注意key=v时,必须紧挨=号两边
  • 获取token后就可以使用token通信

  • 注:重启salt-api后token改变

测试minion端的联通性
  • 下面功能类似于“salt '*' test.ping”
curl -k https://192.168.104.76:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token: ded897184a942ca75683276c29d787ea71c207a9" -d client='local' -d tgt='*' -d fun='test.ping'
return:
- node76: true
参数解释:
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
执行远程命令
  • 下面功能类似于“salt '*' cmd.run ifconfig”
curl -k https://192.168.104.76:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token: ded897184a942ca75683276c29d787ea71c207a9" -d client='local' -d tgt='*' -d fun='cmd.run'   -d arg='uptime'
return:
- node76: ' 13:18:46 up 161 days, 2:23, 1 user, load average: 0.15, 0.09, 0.10'
使用state.sls
  • 下面功能类似于“salt '*' state.sls ifconfig”
 curl -k https://192.168.104.76:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token: ded897184a942ca75683276c29d787ea71c207a9" -d client='local' -d tgt='*' -d fun='state.sls' -d arg='ifconfig'
return:
- node76:
cmd_|-ifconfig_|-ifconfig_|-run:
__run_num__: 0
changes:
pid: 30954
retcode: 0
stderr: ''
stdout: "eth2 Link encap:Ethernet HWaddr 00:50:56:B5:5C:28 \n \
\ inet addr:192.168.90.63 Bcast:192.168.90.255 Mask:255.255.255.0\n\
\ inet6 addr: fe80::250:56ff:feb5:5c28/64 Scope:Link\n \
\ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n RX packets:825051\
\ errors:0 dropped:0 overruns:0 frame:0\n TX packets:434351 errors:0\
\ dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:1000\
\ \n RX bytes:60353823 (57.5 MiB) TX bytes:27062672 (25.8 MiB)\n\
\nlo Link encap:Local Loopback \n inet addr:127.0.0.1 \
\ Mask:255.0.0.0\n inet6 addr: ::1/128 Scope:Host\n UP\
\ LOOPBACK RUNNING MTU:16436 Metric:1\n RX packets:808 errors:0\
\ dropped:0 overruns:0 frame:0\n TX packets:808 errors:0 dropped:0\
\ overruns:0 carrier:0\n collisions:0 txqueuelen:0 \n \
\ RX bytes:59931 (58.5 KiB) TX bytes:59931 (58.5 KiB)"
comment: Command "ifconfig" run
duration: 11.991
name: ifconfig
result: true
start_time: '13:59:06.334112'
使用Targeting
  • 下面功能类似于"salt -L '192.168.90.61,192.168.90.63' test.ping"
 curl -k https://192.168.104.76:8000 -H "Accept: application/x-yaml" -H "X-Auth-Token: ded897184a942ca75683276c29d787ea71c207a9"  -d client='local' -d tgt='node76'  -d expr_form='list'  -d fun='test.ping'
return:
- node76: true
以json格式输出
curl -k https://192.168.104.76:8000 -H "Accept: application/json" -H "X-Auth-Token: ded897184a942ca75683276c29d787ea71c207a9"  -d client='local' -d tgt='node76'  -d fun='cmd.run' -d arg='uptime'
{"return": [{"node76": " 13:25:20 up 161 days, 2:30, 1 user, load average: 0.01, 0.06, 0.08"}]}
使用jobs
 curl -k -s https://192.168.104.76:8000/jobs/20180306112645047796 -H "Accept: application/x-yaml" -H "X-Auth-Token: a7f8b2fab2bfb05334f8a314d97925c1bec1d14c"
info:
- Arguments:
- uptime
Function: cmd.run
Minions:
- node76
Result:
node76:
return: ' 11:26:45 up 162 days, 31 min, 1 user, load average: 0.12, 0.07,
0.08'
StartTime: 2018, Mar 06 11:26:45.047796
Target: node76
Target-type: glob
User: salt-api
jid: '20180306112645047796'
return:
- node76: ' 11:26:45 up 162 days, 31 min, 1 user, load average: 0.12, 0.07, 0.08'
#结果
curl -k -s https://192.168.104.76:8000/jobs/20180306112645047796 -H "Accept: application/x-yaml" -H "X-Auth-Token: a7f8b2fab2bfb05334f8a314d97925c1bec1d14c"
info:
- Arguments:
- uptime
Function: cmd.run
Minions:
- node76
Result:
node76:
return: ' 11:26:45 up 162 days, 31 min, 1 user, load average: 0.12, 0.07,
0.08'
StartTime: 2018, Mar 06 11:26:45.047796
Target: node76
Target-type: glob
User: salt-api
jid: '20180306112645047796'
return:
- node76: ' 11:26:45 up 162 days, 31 min, 1 user, load average: 0.12, 0.07, 0.08'

Salt-API安装配置及使用的更多相关文章

  1. CentOS 安装及配置Salt api

    安装 # yum -y install salt-api 更改配置 vim /etc/salt/master 把默认的注释掉  我们这边默认配置文件目录是/srv/salt default_inclu ...

  2. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  3. < python音频库:Windows下pydub安装配置、过程出现的问题及常用API >

    < python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分 ...

  4. SaltStack安装配置详解

    一.简介 Saltstack 比 Puppet 出来晚几年,是基于Python 开发的,也是基于 C/S 架构,服务端 master 和客户端 minions :Saltstack 和 Puppet ...

  5. salt stack安装与使用

    SaltStack除了传统的C/S架构外,其实还有Masterless架构,如果采用Masterless架构,我不需要单独安装一台SaltStack Master机器,只需要在每台机器上安装Minio ...

  6. ubuntu kylin 14.04安装配置MongoDB v2.6.1(转)

    1.获取最新版本 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz 2.解压并进入bin目录 tar zxvf mongo ...

  7. Django基础之安装配置

    安装配置 一 MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的 ...

  8. Redis 对比 Memcached 并在 CentOS 下进行安装配置

    了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完 ...

  9. VS2015+cordova+ionic安装配置

    VS2015已经出了正式版,想用来试一下cordova方面的开发.最近在看ionic这个框架,于是想能在VS2015里编辑js就好了. 下面说一下蛋疼的安装配置过程. 一.安装VS2015及Andro ...

  10. 01 Node.js简介, 安装&配置

    Node.js 简介 Node.js 是什么 Node.js 有着强大而灵活的包管理器(node package manager,npm) 目前, 已经有强大第三方工具模块, 例如数据库连接, 网站开 ...

随机推荐

  1. 2018.12.31 NOIP训练 czy的后宫6(线性dp)

    传送门 题意简述:给一个nnn个数的数列,你可以把它最多分成mmm段,求每段数之和的最大值的最小值,以及满足这个最小值的时候划分数列的方案数. 思路:第一个问题是二分经典问题,不妨设其答案为limli ...

  2. 2018.12.19 codeforces 1092F. Tree with Maximum Cost(换根dp)

    传送门 sbsbsb树形dpdpdp题. 题意简述:给出一棵边权为1的树,允许选任意一个点vvv为根,求∑i=1ndist(i,v)∗ai\sum_{i=1}^ndist(i,v)*a_i∑i=1n​ ...

  3. Echarts的使用方法

    效果图: 1. 在echarts官网下载包,解压后,将文件Echarts\echarts-2.2.7\echarts-2.2.7\doc\example\www\js\echarts.js文件拷贝,放 ...

  4. GDI基础(1):绘制线条和图形

    1. 绘制一个像素点:SetPixel(). 绘制直线:MoveTo(),LineTo(). 绘制多个首尾相连的线:Polyline(). 绘制矩形:FrameRect(),Rectangle(),F ...

  5. best-case analysis in real-time system

    ECRTS: Exact Best-Case Response Time Analysis of Fixed Priority Scheduled Tasks motivation Real-time ...

  6. ejb servlet demo

    官方文档: http://docs.oracle.com/javaee/6/tutorial/doc/gijre.html package converter.ejb; import java.mat ...

  7. 使用freemarker导出word

    最近需要将jsp部分页面导出为word文件,环境是Spring+SpringMVC+Hibernate. 我使用的是FreeMarker模板引擎来完成.这是FreeMarker的中文参考手册,感兴趣的 ...

  8. Lib作为“静态库”与“动态库”中的区别

    Lib作为“静态库”与“动态库”中的区别 0. 前言: 什么是静态连接库: 静态库在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中.因此对应的链接方式称为静态链接. 为什么 ...

  9. poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数

    poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数 题目大意:如题目所示 给你一些关系图——连通图,想要问你有没有个节点,损坏后,可以生成几个互相独立的网络(也就是连通分量), ...

  10. HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化

    HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...