Скриптизерство в быту и на работе

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

Если говорить в общем, то большая часть админов использует скриптинг в своей карьере, особенно на начальных этапах. Почти всегда это связано с тем, что Unix и bash дают очень простой и доступный способ решения проблем. В конце концов, по мере накопления опыта, многие приходят к гибридной схеме из примитивного скриптинга, применения определенной стркутуризации, системы контроля версий и fabric.

То есть практически все применяют вот этот стэк:

  • bash
  • ruby или python
  • fabric чтобы выполнять код на нескольких серверах сразу
  • git для хранения кода
  • ipython, irb или pry в качестве среды для экспериментов

Как всегда, мнения разделились по поводу того, стоит ли использовать системы управления конфигурацией, или имеет смысл все скриптовать на простом bash. Ключевой вопрос -- сможете ли вы поддерживать это в организации. Если у вас один или два админа -- это может быть просто невозможно. Анатолий Михайлов рассказал как они в sonru.com используют коллекцию из 500-600 скриптов и простые текстовые чеклисты для админов, чтобы конфигурить сервера. Некоторые, напротив, считают что все админские задачи нужно заворачивать в код, и в какой-нибудь chef, puppet или ansible. Альтернатива -- очень радикальный проект под названием Fucking Shell Scripts.

Очень интересные мысли были высказаны про отдельные трюки при написании скриптов:

  • Чтобы не приходилось апдейтить скрипты на серверах, можно выполнять их при помощи ssh, передавая их интерпретатору через пайп. То есть cat script.py | ssh myhost python -

  • Когда работаете над программерскими или админскими тикетами, удобно под каждый тикет создавать отдельную папку, куда записывать сессии bash или куски скриптов. Таким образом, если захочется вспомнить, как вы сделали то или иное действие, всегда можно будет его нагрепать.

  • Вообще хранить свою базу знаний в обычных папках и текстовых файлах, под системой контроля версий может быть очень удобно. Тут я все-таки сошлюсь на Emacs и его потрясающую систему org-mode для организации любой информации в plaintext: начиная от простых заметок и todo листов, и заканчивая управлением финансами и проектами.

  • Использование Makefile-ов для скриптов, которые обрабатывают данные. Поскольку Makefile-ы отлично управляют зависимостями, на них можно строить сложные конвееры обработки информации, в которых на входе не программы на c/c++, а, например, разнородные базы данных.

Отдельно хочется отметить Олега Сороку, который поведал о том, как скриптинг устроен в мире Windows. PowerShell пронизывает систему практически до основания, позволяя делать гораздо больше, чем привыкли в мире Unix. В качестве примера Олег привел целую SAAS систему, которая использовала PowerShell для поднятия виртуальных машин и накатывания самых разных видов Windows софта.

comments powered by Disqus