Salt-API安装配置及使用
来源:互联网 发布:cf彩虹哥淘宝 编辑:程序博客网 时间:2024/05/01 18:04
Salt-API安装配置及使用
SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。本文讲带你了解如何安装配置Salt-API, 如何利用Salt-API获取想要的信息。
前置阅读
- salt-api手册
- Salt External Authentication System
环境说明
- 操作系统环境: CentOS 6.4,已配置EPEL源
- Salt Master/Minion版本: 0.17.2, Master IP地址为 192.168.3, 用于本次测试的Minion ID为 minion-01.example.com
开工
Note
以下操作如非特别注明,均在Master上进行
安装Salt-API
Note
当前EPEL中的salt-api版本为0.8.2, 存在几处bug, 本文讲使用pip方式安装0.8.3版本
# 安装salt-apipip install salt-api# 下载服务维护脚本wget https://raw.github.com/saltstack/salt-api/develop/pkg/rpm/salt-api -O /etc/init.d/salt-apichmod +x /etc/init.d/salt-apichkconfig salt-api on
配置Salt-API
生成自签名证书(用于ssl)
cd /etc/pki/tls/certs# 生成自签名证书, 过程中需要输入key密码及RDNsmake testcertcd /etc/pki/tls/private/# 解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码openssl rsa -in localhost.key -out localhost_nopass.key
Salt-API配置
- 创建用于salt-api的用户
useradd -M -s /sbin/nologin pengyaoecho "pengyao_pass" | passwd pengyao —stdin
- 配置eauth, /etc/salt/master.d/eauth.conf
external_auth: pam: pengyao: - .* - '@wheel' - '@runner'
- 配置Salt-API, /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
- 启动Salt-API
service salt-api start
Salt-API使用
- 测试工具为操作系统自带的 curl
Login
- Request
curl -k https://192.168.38.10:8000/login -H "Accept: application/x-yaml" \ -d username='pengyao' \ -d password='pengyao_pass' \ -d eauth='pam'
- Response
return:- eauth: pam expire: 1385579710.806725 perms: - .* start: 1385536510.8067241 token: 784ee23c63794576a50ca5d3d890eb71efb0de6f user: pengyao
其中 token 后边的串为认证成功后获取的token串,之后可以不用再次输入密码,直接使用本Token即可
查询Minion(minion-01.example.com)的信息
- Request
curl -k https://192.168.38.10:8000/minions/minion-01.example.com \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535"
其中 X-Auth-Token 后边的串为之前Login获取到的Token串, 如果请求的URL不包含 minion-01.example.com ,则请求的为所有Minion的信息
- Response
return:- minion-01.example.com: cpu_flags: - fpu - vme - de ......
job管理
获取缓存的jobs列表
- Request
curl -k https://192.168.38.10:8000/jobs/ \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535"
- Response
return:- '20131127065003726179': Arguments: [] Function: test.ping Start Time: 2013, Nov 27 06:50:03.726179 Target: '*' Target-type: glob User: sudo_vagrant
查询指定的job
- Request
curl -k https://192.168.38.10:8000/jobs/20131127065003726179 \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535"
- Response
return:- minion-01.example.com: true
远程执行模块
- Request
curl -k https://192.168.38.10:8000/ \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535" \ -d client='local' \ -d tgt='*' \ -d fun='test.ping'
也可以请求 https://192.168.38.10:8000/run ,不过该方法为一次性使用,无法使用Token, 只能使用username和password
- Response:
return:- minion-01.example.com: true
运行runner
- Request
curl -k https://192.168.38.10:8000/ \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535" \ -d client='runner' \ -d fun='manage.status'
- Response
return:- down: [] up: - minion-01.example.com
运行wheel
- 注意: 由于当前版本的Salt Master有一处bug, 导致wheel的结果无法返回(https://groups.google.com/forum/#!topic/salt-users/9HcZ6R7MB0g),官方在最新的代码中已经修复,使用时需要使用github中最新的salt代码
- Request(例子为查询所有的minion key列表)
curl -k https://localhost:8000/ \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535" \ -d client='wheel' \ -d fun='key.list_all'
- Response
return:- data: _stamp: 2013-12-23_04:54:22.483159 fun: wheel.key.list_all jid: '20131223045422481844' return: local: - master.pem - master.pub minions: - minion-01.example.com minions_pre: [] minions_rejected: [] success: true tag: salt/wheel/20131223045422481844 user: pengyao tag: salt/wheel/20131223045422481844
Targeting
谢谢 苦咖啡 提供
如果想在api中使用salt的 Targeting 功能,可以在Request的Post Data中增加expr_form (默认是 glob )及值即可:
依然以curl为例:
curl -k https://192.168.38.10:8000/ \ -H "Accept: application/x-yaml" \ -H "X-Auth-Token: 8e211da5d6bbb51fbffe6468a3ca0c6a24b3e535" \ -d client='local' \ -d tgt='webcluster' \ -d expr_form='nodegroup' \ -d fun='test.ping'
将利用 nodegroup 匹配到名为 webcluster 的target。
总结
Salt API几乎涵盖了所有的salt操作,功能强劲,尤其是需要salt和第三方系统集成的场景,值得拥有。
0 0
- Salt-API安装配置及使用
- Salt-API安装配置及使用
- Salt-API安装配置及使用
- Salt api安装及配置
- salt-api安装、配置、使用
- salt-api安装、配置、使用
- 配置管理(3) salt-api安装、配置、使用
- salt-api 安装配置
- salt-api安装配置
- salt-api 安装使用
- Saltstack之Salt-api安装使用
- Centos6.5配置salt-api
- Saltstack-Salt常用模块及API
- Hive安装配置使用及java api调用
- Hive安装配置使用及java api调用
- Salt安装
- salt安装
- salt实战系列-安装salt
- IOS8开发视频教程之:基于Swift实战UI从入门到精通
- 设计模式之“行为型模式”(二)
- android 学习视频 很全的一套视频 包括实例代码带你了解android
- vim中自动补全的快捷键
- 从乌云看企业安全那些事儿
- Salt-API安装配置及使用
- JS读秒跳转
- 字符串转换为数字(完整标准版)
- Android .mk文件语法解析
- S3C6410+FPGA+RTL8211 驱动
- Redis的配置
- 使用Maven进行Hadoop源代码编译
- 完全免费快速搭建个人www服务器
- JSON与PHP的操作