1. 程式人生 > >Saltstack的API接口與調用方式

Saltstack的API接口與調用方式

ebs ports 主動 get api -a 網上 函數 出了

saltstack看起來是成為一個大規模自己主動化運維和雲計算管理的一個框架,類似於SDK,並非像puppet僅僅成為一個工具.基於良好設計的API和清楚的思路,讓salt的二次開發變得非常easy.寫非常少的代碼就能夠將salt跟現有的運維系統結合.saltstack是用python語言實現的,假設對saltstack本身進行二次開發,就必須得會python語言. Saltstack是通過多個獨立的模塊構成的,這些都能夠當做saltstack的api.然後在上層做基礎開發能夠通過調用這些saltstack的api的模塊進行.通過在python中import引入相應的api模塊實現要實現的功能就可以,然後寫自己相應的需求代碼.簡單案例:調用saltstack的api模塊.由於saltstack使用python語言實現,而python自帶的shell跟ubuntu自帶默認的vi編輯器一樣比較癡呆,所以先安裝ipython,作為開發python的幫助利器.ipython是一個python的交互式shell,功能強悍.跟ubuntu安裝其它軟件一樣Sudo apt-getinstall ipython 就能夠安裝. 安裝完成後,進入ipython操作界面,然後通過ipython的補全功能,看看salt的模塊例如以下:這裏以salt.client為樣例,說明一下對saltstack的api的調用.首先進入ipython的界面,importsalt.client (引入salt.client的模塊)Client = salt.client.LocalClient() (LocalClient是底層定好好的一個類.)Ret = client.cmd(‘1st’, ‘cmd.run’,[‘hostname’])Ret就可以回顯出1st控制端的hostname的值.具體的client模塊的函數介紹參考:http://docs.saltstack.com/ref/clients/index.html#client-apis然後其它像salt.grains模塊,就是收集信息模塊.像引入grains模塊後,Import salt.grains.core然後就能夠調用其function函數.Salt.grains.core.ip4() (這個是回顯ip地址信息,由函數名就能夠判斷出來的)Salt-api為了迅速集成saltstack到第三方系統中,官方提供了salt-api模塊.Salt-api是作為saltstack的一個模塊接口,它能夠提供一系列的接入執行saltstack系統的接口.當saltstack須要與第三方系統集成的時候,這時候就須要salt-api來進行中間的連接介入.Salt-api作為一個模塊接口,所以首先是要進行安裝配置的.首先安裝好salt-api在salt-master服務端.然後配置salt-master的配置文件,把執行salt-api的模塊啟用.再安裝好salt-api所需的動態鏈接庫或者你要執行的軟件.最後啟動salt-api,並且重新啟動全部的配置.在配置salt的master文件時候,不同的軟件,所須要配置的選項不同.在master的配置文件裏,當中salt-api提供了PAM的方式進行認證和權限劃分,編輯 salt master 的配置文件 /etc/salt/master , 編輯 external_auth 那一部分,指定用戶和他所擁有的權限. API 是通過cookie記錄認證信息的,所以調用一定要保存cookie,我們調用api的時候首先須要認證,發送請求給 /login.簡單案例: 這裏以tornado這個webserver作為示例.由於這個是支持python語言的server.首先看官網,在ubuntu下安裝好tornado.然後跑起來.講的非常明確,可是細節要靠自己摸索.地址http://opython.com/還是依照官網給的demo演示salt-api的調用. saltstack官方有個webui 叫 halite ,一個在頁面執行管理的ui.後端用的是salt-api .官網介紹: http://salt-api.readthedocs.org/en/latest/.可是這個最後發現更讓人晦澀,並且裏面要求的配置文件,根本找不到.總結通過這幾天的學習,查找資料.自己總結為saltstack的api接口調用是比較方便的,網上資料非常少,並且官網的salt-api的樣例講的比較籠統,網上的樣例是有結合第三方的程序通過salt-api接入saltstack中.個人總結:saltstack本來就是一個開源的程序,所以其底層代碼是透明的,所以能夠直接引入saltstack的api的模塊進行相應的開發.可是前提是了解相應的api的功能,能夠不必深究底層代碼類怎樣實現,可是僅僅要知道function功能就能夠啦.可是一般開發中,應該都不是直接對saltstack的api調用,而是通過salt-api作為一個統一的接口接入.salt-api提供saltstack的所要的各種api接口.關於對saltstack的api的接口與調用方式,這些就是自己看資料綜合整理的.可是中間出了非常多問題,網上找不到答案的問題.就僅僅能自己揣測.官網上講的非常easy,並且看不非常明確.反正總而言之,saltstack的api接口是以各種模塊的形式提供出來,可供python來使用,做開發.然後就是salt-api作為一個獨立的接入模塊,相當於一個SDK的環境,大大簡化saltstack集成到現有的運維環境中去.

Saltstack的API接口與調用方式