SaltStack netapi 模塊總體介紹

原文鏈接:https://docs.saltstack.com/en/latest/topics/netapi/index.html

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 tornadourllib2requests庫,以使用與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_cherrypyrest_tornado支持通過複製和重命名實例的整個目錄來運行多個實例。 要啓動複製出來的多個netapi模塊,請在Salt Master配置中爲複製得到的netapi模塊添加相應的配置塊。 每個添加的配置塊的名稱必須與複製得到的netapi模塊的每個目錄的名稱匹配。

INLINE DOCUMENTATION

與Salt的其餘部分一樣,最佳實踐是在netapi模塊中的類、方法和函數上添加適當的註釋說明。

LOADER “MAGIC” METHODS

Salt加載器使得netapi模塊中的任意函數都可以訪問到 __opts__ 配置數據。

The full list of netapi modules - netapi模塊的三種技術實現方案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章