Распространение пользовательского инструмента командной строки на серверы предприятия

Мне было поручено создать инструмент командной строки, который мы будем предоставлять нашим корпоративным клиентам, чтобы они могли использовать API для загрузки данных на нашу платформу. API работает со стандартными запросами cURL, поэтому я могу выполнять большинство основных функций с помощью простых сценариев bash, хотя я хотел бы предоставить что-то надежное и действительно облегчающее их использование, и я не знаю, что я делаю не знаю Это были хорошие 8 лет с тех пор, как я действительно выполнил любую серьезную работу сисадмина.

Большинство хороших инструментов, которые я использую в эти дни, написаны на Ruby или Python и имеют стандартный процесс распространения (Gems, например). Однако я знаю, что у rhel и других платформ есть свои собственные менеджеры пакетов.

И наконец, вопрос: в какой день и в каком возрасте / какой метод распространения я должен рассмотреть, чтобы охватить самый широкий спектр платформ без необходимости создавать совершенно разные версии для каждой платформы?

Я также хотел бы получить ваши общие отзывы о создании аналогичных проектов или ссылки на проекты, которые, по вашему мнению, хорошо справляются с этой задачей сейчас и имеют открытый исходный код, который я мог бы прочитать.

Заранее спасибо!

1 ответ

Решение

Что ж, ваш вопрос довольно широкий, но я писал инструменты sysadmin на python в течение прошлого года. Так как вы запрашиваете общий отзыв, вот несколько вещей, с которыми я столкнулся.

Вы можете использовать urllib2, чтобы написать свой curl запрос в чистом коде Python. Если вам нужны только некоторые базовые REST-запросы, вы можете посмотреть запросы или любой другой python-REST-клиент.

Если вам нужно поддерживать rhel 5 (как я), вы не сможете использовать что-либо, находящееся в python > 2.4

Для распространения: вы можете использовать setuptools Все, что вам нужно сделать, это создать setup.py скрипт, который говорит setuptools, как выполнить установку. Затем вы можете загрузить tarball в pypi

После этого ваши клиенты могут установить ваши инструменты с помощью:

easy_install toolname

или же

pip toolname

Затем easy_install или pip загрузит архив из pypi и выполнит инструкции в setup.py скрипт.

В качестве альтернативы, если вы хотите распространять на корпоративные серверы, вы также можете очень легко создать rpms:

python setup.py bdist_rpm

Это будет использовать yout setup.py и создаст из него rpm, то же самое должно быть возможно для.deb (с некоторыми дополнительными плагинами bdist)

Я работаю в Университете Гента, и мы открыли исходные тексты некоторых инструментов / библиотек python, которые мы написали, например, вы, вероятно, начнете с разбора аргументов командной строки, мы написали generaloption.py, который расширяет базовый pyp 2.4 optionparser, и дает ему несколько крутых новых опций. (например, по умолчанию позволяет перезаписать любой параметр командной строки переменной среды). Также расширенный регистратор с именем fancylogger.py.

В этом репозитории вы можете посмотреть на некоторые другие вещи, которые могут помочь при написании сценариев sysadmin под python 2.4.

Другие вопросы по тегам