saltstack看起來是成為一個大規模自動化運維和雲計算管理的一個框架,類似於SDK,並不是像puppet僅僅成為一個工具.基於良好設計的API和清楚的思路,讓salt的二次開發變得很簡單.寫很少的代碼就可以將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這個web服務器作為演示例子.因為這個是支持python語言的服務器.首先看官網,在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的接口與調用方式,這些就是自己看資料綜合整理的.但是中間出了很多問題,網上找不到答案的問題.就只能自己揣測.官網上講的很簡單,而且看不很明白.反正總而言之,saltstack的api接口是以各種模塊的形式提供出來,可供python來使用,做開發.然后就是salt-api作為一個獨立的接入模塊,相當於一個SDK的環境,大大簡化saltstack集成到現有的運維環境中去.
版權聲明:本文為博主原創文章,未經博主允許不得轉載。