Как построить инфраструктуру веб-сервисов Perl - PullRequest
3 голосов
/ 14 июня 2011

У меня есть много сценариев, которые я использую для управления многосерверной инфраструктурой. Некоторые из этих сценариев требуют доступа с правами root, некоторые требуют доступа к базам данных, и большинство из них основаны на perl. Я хотел бы преобразовать все эти скрипты в очень простые веб-сервисы, которые могут выполняться из разных приложений. Эти веб-службы будут принимать регулярные входные данные запроса и будут выводить json в результате выполнения. Я думаю, что мне следует установить простой диспетчер Perl, назвать его action, который будет выполнять регистрацию, проверку учетных данных и выполнение этих простых сценариев. Что-то вроде:

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

Это вызовет Perl-драйвер action, который, в свою очередь, вызовет сценарий update-dns с соответствующими параметрами (возможно, каким-то образом очищенным) и вернет соответствующий ответ json. Я хотел бы, чтобы эта инфраструктура имела следующие атрибуты:

  • Все скрипты находятся в одном месте. Если новый сценарий пропущен, он автоматически становится вызываемым.
  • Все сценарии должны иметь некоторую форму манифеста, которая описывает, кто может вызывать его (принадлежащий к какой-то группе ldap), какие параметры он принимает, каков ответ и т. Д. Чтобы это само объяснилось.
  • Все сценарии регистрируются с точки зрения того, кто что сделал и каков был ответ.
  • Было бы замечательно, если бы в командной строке был способ сделать что-то вроде # action update-dns --server=www.google.com --up=192.168.1.1

Нужно ли начинать это с нуля, или уже есть что-то, на что я могу снова положиться?

1 Ответ

2 голосов
/ 14 июня 2011

Возможно, вы захотите проверить мои рамки Sub :: Spec . Документация по-прежнему скудна, но я уже использую ее для нескольких проектов, в том числе для других моих модулей в CPAN .

Идея состоит в том, что вы пишете свой код в функциях, декорируете / добавляете достаточное количество метаданных к этим функциям (включая некоторую сводку, спецификацию аргументов и т. Д.), И будут наборы инструментов для заботы о том, что вам нужно, например запуск ваших функций в командной строке (используя Sub :: Spec :: CmdLine и через HTTP (используя Sub :: Spec :: HTTP :: Server и Sub :: Spec :: HTTP :: Клиент ).

В начальной стадии разработки находится пример проекта . Также взгляните на http://gudangapi.com/. Например, функция GudangAPI :: API :: finance :: currency :: id :: bca :: get_bca_exchange_rate () будет доступна как функция API через HTTP API.

Свяжитесь со мной , если вы заинтересованы в развертывании чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...