2011-06-13 78 views
3

我有很多用於管理多服務器基礎結構的腳本。其中一些腳本需要root訪問權限,一些腳本需要訪問數據庫,其中大多數都是基於perl的。我想將所有這些腳本轉換爲可以從不同應用程序執行的非常簡單的Web服務。這些Web服務會接受常規請求輸入,並會因執行而輸出json。我在想,我應該設置一個簡單的perl調度程序,將其稱爲action,它將執行日誌記錄,檢查憑據並執行這些簡單腳本。喜歡的東西:如何構建一個perl Web服務基礎結構

http://host/action/update-dns?server=www.google.com&ip=192.168.1.1 

這將調用action Perl驅動程序這反過來會調用update-dns腳本使用適當的參數(可能以某種方式清洗),並返回相應的JSON響應。我希望此基礎架構具有以下屬性:

  • 所有腳本都駐留在一個位置。如果新的腳本被丟棄,那麼它會自動變爲可調用的。
  • 所有的腳本需要有某種形式的清單,描述誰可以調用它(屬於某個ldap組),清單需要什麼參數,響應是什麼等等,以便自我解釋。
  • 所有腳本都記錄了誰做了什麼以及響應是什麼。
  • 這將是巨大的,如果有一個命令行的方式做類似# action update-dns --server=www.google.com --up=192.168.1.1

我一定要得到從頭這是怎麼回事,還是有一些已經在其之上的,我可以捎帶上?

+1

怎麼樣使用http://java.net/projects/hudson/和HTTP的組合:// WWW .nagios.org /完美匹配或完全關閉;-) – 2011-06-13 21:04:24

+0

@Fredrik將在第是。我正在尋找簡單和輕量級的東西,最好基於perl。按Fredrik的建議, – rmarimon 2011-06-13 21:20:27

+0

,nagios值得一看。由於[nagios plug.ins](http://exchange.nagios.org/directory/Plugins)是單獨的可執行文件,其中許多是用C和Perl編寫的,即使沒有nagios,也可以使用它們。如果您重新創建/修改車輪,您可以在自己的應用程序(wrt license)中使用它們。 – mbx 2011-06-13 21:59:03

回答

2

你可能想看看我的框架Sub::Spec。文檔仍然很少,但我已經將它用於多個項目,其中包括my other modules in CPAN

這個想法是你在函數中編寫你的代碼,爲這些函數裝飾/添加足夠的元數據(包括一些總結,參數說明等),並且會有工具鏈來處理你需要的東西。運行在命令行的功能(使用Sub::Spec::CmdLine,並通過HTTP(使用Sub::Spec::HTTP::ServerSub::Spec::HTTP::Client)。

有處於起步階段一個sample project。另外看看http://gudangapi.com/。例如,功能GudangAPI::API::finance::currency::id::bca::get_bca_exchange_rate()將訪問如通過HTTP API的API函數

Contact me如果你有興趣在部署這樣的事情

+0

這似乎完全是我想要移動的方式。你有沒有發現像你這樣的其他圖書館做比較? – rmarimon 2011-06-15 02:46:58

+0

用於編寫命令行應用程序:如果使用Moose,則可以使用[MooseX :: Runnable](http://search.cpan.org/dist/MooseX-Runnable)。還有[App :: Cmd](http://search.cpan.org/dist/App-Cmd)。至於向HTTP公開功能,有Plack/PSGI。 – 2011-06-15 14:28:06