Статьи

Безболезненная настройка сервера с бабушкой

Веб-разработка это весело. По крайней мере, так и должно быть. Однако он включает в себя некоторые задачи — настройку нового сервера или виртуальной машины со всеми необходимыми пакетами программного обеспечения, файлами конфигурации и т. П., Которые немного более утомительны. Введите Бабушку. Babushka — небольшая часть программного обеспечения Ruby, написанного Беном Хоскингсом. Это позволяет вам писать простые маленькие рецепты (которые Бабушка называет «deps») для установки определенного программного обеспечения на ваш сервер. В своей самой основной форме каждое депо состоит из двух частей: способ определения того, была ли зависимость уже достигнута, и, если нет, способ ее удовлетворения. Таким образом, вы можете поддерживать библиотеку deps, которая позволит вам быстро настроить и настроить ваш сервер так, как вам нравится, не тратя два часа, пытаясь разобраться в отсутствующих зависимостях и собрать ошибки. Например, предположим, что как часть моей настройки я хочу убедиться, что время сервера точно. Вот быстрый способ проверки системного времени на серверах времени Apple:

dep 'time' do  server = 'time.apple.com'  met? {    log_shell("Checking clock against #{server}",        "ntpdate -q #{server} | tail -n1") =~ /offset -?(d+)(.d+)? sec/    $1.to_i < 10  }  meet {    sudo 'service ntp stop'    log_shell "Setting time from #{server}", "ntpdate #{server}", :sudo => true    sudo 'service ntp start'  }end

Как вы можете догадаться, met? Блок — это то, что выполняется, чтобы определить, удовлетворена ли зависимость. Он всегда должен возвращать логическое значение; в этом случае мы проверяем, составляет ли смещение между временем нашей системы и временем сервера менее десяти секунд. Если met? возвращает falsemeet Здесь вы должны поместить весь код, необходимый для удовлетворения зависимости. После того, как это было выполнено, он будет запущен met? еще раз, чтобы посмотреть, сработало ли это. Возможно, вы подумали: «Эй, это круто!» Но подождите, это еще не все. Бабушка будет прозрачно обрабатывать установку программного обеспечения, либо через менеджер пакетов вашей системы, либо из исходного кода. Допустим, я хочу установить memcached. Это требует libevent в качестве зависимости, поэтому мне нужно получить это через менеджер пакетов. Вот упрощенный способ сделать все это с Бабушкой:

 dep 'memcached.src' do  requires 'libevent.managed'  source 'http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz'  provides 'memcached'enddep 'libevent.managed' do  installs {    via :apt, 'libevent-dev'    via :brew, 'libevent'  }  provides []end

Там происходит довольно много интересных вещей. Во-первых, вы заметите, что я просто указываю Бабушке на источник memcached, а обо всем остальном заботятся прозрачно. Бабушка загрузит архив, распакует его, а затем запустит ./configuremakemake install Это благодаря тому, что бит .src это говорит Бабушке, что я хочу использовать исходный шаблон для удовлетворения этой зависимости. Babushka поставляется с шаблонами для установки из исходных кодов, установки с помощью системных менеджеров пакетов и некоторых других, но вы также можете определить свои собственные шаблоны и использовать их в своих приложениях. Для вас есть множество опций, которые вы можете предоставить любому из своих сотрудников. , Например, если бы я хотел предоставить аргумент ./configure

 configure_args "--enable-sasl"

Другой интересный фрагмент синтаксиса — это строка requires Это делает ваш депозит зависимым от другого. Если бы я запускал babushka memcached.managedinstalls У Babushka есть удивительный набор маленьких помощников для взаимодействия с файловой системой и оболочкой, а способность определять свои собственные шаблоны делает ее невероятно гибкой. На данный момент документация довольно ограничена, но собственный репозиторий Бена babushka-deps на GitHub содержит довольно много реальных примеров (хотя они в основном направлены на развертывание стека Rails / Passenger / Nginx, они все же могут дать вам хорошую идею как работают все различные помощники и опции). Чтобы установить Babushka, запустите следующее из командной строки Linux:

 bash -c "`wget -O - babushka.me/up`"

В Mac OS X это:

 bash -c "`curl babushka.me/up`"

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

примечание: хотите больше?

Если вы хотите узнать больше от Луи, подпишитесь на нашу еженедельную техническую новостную рассылку Tech Times .