2011-06-13 45 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