linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
網(wǎng)上找了很多文檔都訪問不了salt-api,搞了好半天,終于弄好了,寫個筆記,方便以后查詢
如果需要通過第三方來調(diào)用SaltStack時,使用SaltStack自帶的Python API并不能很好的滿足需求。可以通過使用SaltStack基于RESTful風(fēng)格的HTTP API。該API模塊并不是內(nèi)置的,需要單獨(dú)安裝。
Salt REST API簡介
這里簡單的說明下,SaltStack官方支持三種REST API,分別是rest_cherry; rest_tonado和rest_wsgi
rest_cherry和rest_tonado兩個模塊支持監(jiān)聽所有IP的指定端口接收請求
rest_wsgi只支持本機(jī)訪問,只綁定了127.0.0.1
安裝Salt-API服務(wù)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,然后再執(zhí)行以上命令
配置用戶及權(quán)限
shell> useradd -M -s /sbin/nologin sa
shell> echo "sapassword" | passwd sa --stdin
在salt-master的配置文件最后添加如下配置
external_auth:
pam: ?#認(rèn)證模式,pam指的是用Linux本身的用戶認(rèn)證模式
sa: ?#Linux系統(tǒng)中真實(shí)存在的用戶名
-'*': ?#設(shè)置用戶的權(quán)限,允許該用戶操作哪些主機(jī),*代表全部
-test.* ?#允許操作的模塊及方法
-cmd.*
配置salt-api服務(wù)
在salt-master的配置文件最后添加如下配置rest_cherrypy:
port: 1559 ?#默認(rèn)監(jiān)聽所有IP的1559端口
ssl_crt: /etc/pki/tls/certs/localhost.crt ?#引用的正是前面創(chuàng)建的證書
ssl_key: /etc/pki/tls/certs/localhost.key
啟動服務(wù)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
復(fù)制得到的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所在的“坐標(biāo)”
def test():
pre_data = [{"client":"local", "tgt":"*", "fun":"test.ping"}] ? #根據(jù)上面官方文檔的要求組成數(shù)組嵌套字典的形式
json_data = json.dumps(pre_data) ? ?#將其轉(zhuǎn)化為json格式
header = {"Content-Type":"application/json", "Accept":"application/json", "X-Auth-Token":"697adbdc8fe971d09ae4c2a3add7248859c87079"}
#這里說明下,Content-Type是聲明傳遞給API的數(shù)據(jù)是什么格式的,這里指定了json,是因?yàn)樯厦娴膒re_data數(shù)據(jù)被我轉(zhuǎn)化成了json格式
#Accept是聲明返回結(jié)果以什么樣的格式顯示,這里也指定了json格式來顯示返回結(jié)果
request = urllib2.Request(url, json_data, header) ? ?#構(gòu)造一次請求
response = urllib2.urlopen(request) ? ?#構(gòu)造一次HTTP訪問
html = response.read()
print html
if __name__=="__main__":
test()
總結(jié)
以上是生活随笔為你收集整理的linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 传真 邮件,如何在Linux
- 下一篇: c语言尖括号 注释,关于C语言inclu