Introduction to netapi modules - netapi模塊介紹
您也可以參考在Github上維護的這一份技術資料:SaltStack netapi模塊開發指南
netapi
模塊提供了以API爲中心的對Salt的訪問支持。 通常是面向外部的服務調用,例如REST或WebSockets,XMPP,XMLRPC等。
通常,netapi
模塊綁定到一個端口並啓動服務,對外部應用提供Salt管理服務。 可以單個模塊運行,也可以同時運行多個模塊。
通過將配置添加到Salt Master配置文件中,然後啓動salt-api
守護程序來啓用netapi
模塊。 在使用前請檢查每個模塊的文檔以查看外部依賴要求和配置設置。
與Salt和Salt 周邊衛星項目的通信是使用Salt自己的Python API完成的。 可用客戶端接口的列表如下。
salt-api
在Salt的2014.7.0發行版之前,
netapi
模塊存在於單獨的姊妹項目salt-api
中。 目前,該項目已合併到Salt項目的主幹分支中。
Client interfaces - 客戶端接口
Salt的客戶端接口通過製作映射到函數參數的值的字典來對外暴露可執行的功能函數。 這允許僅通過創建數據結構來調用函數。 (而這也正是Salt自己內部的工作方式!)
class salt.netapi.NetapiClient(opts)
提供一種以low-data數據結構形式訪問Salt中各種客戶端接口的統一方法。 例如:
>>> client = NetapiClient(__opts__)
>>> lowstate = {'client': 'local', 'tgt': '*', 'fun': 'test.ping', 'arg': ''}
>>> client.run(lowstate)
HTTP Modules
本教程演示了Salt中可用的各種HTTP模塊,它們分佈於多個其它的Salt核心功能模塊裏。 這些模塊通過包裝Python tornado
,urllib2
和requests
庫,以使用與Salt工作流更一致的方式擴展它們。
Writing netapi modules
簡單地說,netapi
模塊綁定一個服務端口並啓動服務。 它們是開放式的,可以用來爲Salt提供各種外部接口,甚至可以同時提供多個接口。
CONFIGURATION
所有netapi
配置均在Salt master配置中完成,並採用類似於以下的形式:
rest_cherrypy:
port: 8000
debug: True
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/certs/localhost.key
THE __VIRTUAL__ FUNCTION
與Salt中的所有模塊類型一樣,netapi
模塊會通過Salt的加載程序接口來確定是否應將其加載到內存中然後執行。
模塊中的__virtual__
函數進行此確定,並應返回False
或將用作模塊名稱的字符串。 如果模塊引發ImportError
或任何其他錯誤,則將不會加載該模塊。
THE START FUNCTION
將爲每個已加載的netapi
模塊調用start()
函數。 此函數應包含實際啓動服務的代碼。 這是使用multiprocess多進程啓動的。
MULTIPLE INSTANCES
New in version 2016.11.0.
rest_cherrypy
和rest_tornado
支持通過複製和重命名實例的整個目錄來運行多個實例。 要啓動複製出來的多個netapi
模塊,請在Salt Master配置中爲複製得到的netapi
模塊添加相應的配置塊。 每個添加的配置塊的名稱必須與複製得到的netapi
模塊的每個目錄的名稱匹配。
INLINE DOCUMENTATION
與Salt的其餘部分一樣,最佳實踐是在netapi
模塊中的類、方法和函數上添加適當的註釋說明。
LOADER “MAGIC” METHODS
Salt加載器使得netapi模塊中的任意函數都可以訪問到 __opts__
配置數據。