Заметки в категории How To

Запускаем скрипт при старте и выключении Ubuntu

Довольно часто надо сделать так, чтоб при старте сервера запустился какой-либо скрипт. Это довольно просто и очень многие это знают. Просто добавляем запуск этого скрипта в /etc/rc.local и он будет запущен. Но что делать, если надо запустить скрипт при выключении сервера? Например, загрузить логи перед уничтожением облачного сервера …

Расширяем раздел в EC2

Иногда, так случается, что надо расширить диск для какого-то EC2 инстанса. Это можно сделать не останавливая сам инстанс, чтоб не прерывать работу сервиса.

Для этого заходим в веб-консоль AWS, находим нужный volume и увеличиваем его размер.

Потом нужно увеличить раздел и саму файловую систему на этом разделе. Заходим по ssh …

SSH сквозь бастион хост

Концепция бастиона не нова и давно используется для доступа в охраняемый периметр. Но вот как получить доступ к внутренним серверам в прозрачном режиме? Тут мы это и рассмотрим.

ProxyJump

Опция командной строки

Начиная с версии SSH 7.3 есть настройка конфигурации клиента ProxyJump или -J флаг:

ssh -J <bastion-host> <remote-host …

Зеркало pip в Китае

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

В случае с python pip это можно сделать так:

mkdir ~/.pip
cat <<EOF > ~/.pip/pip.conf
 [global]
 trusted-host =  mirrors …

Рестарт Passenger без простоя из Capistrano

Когда у вас достаточно нагруженный проект на RoR и для запуска вы используете Passenger, то рестарт приложения может вызывать небольшой (а иногда и простой) простой. Это не есть хорошо.

Passenger имеет две версии - Open Source и Enterprise. Так вот в Enterprise версии есть опция --rolling-restart, которая и позволяет не перезапускать …

Деплой на много хостов с Capistrano

Не так часто, но бывает надо сделать деплой на, скажем, 20 хостов, которые находятся за bastion'ом.

Если у вас 5 хостов и все работает как часы, то нет проблем, казалось бы. Увеличиваем количество хостов, запускаем деплой, profit.

Но чаще всего вы получите ошибку и будете очень долго удивляться, как же …

Ошибка при установке gem mysql2

Если вы получаете ошибку типа:

Error installing mysql2: ERROR: Failed to build gem native extension.

то решение очень простое. Сначала ставим openssl

brew install openssl

А потом ставим gem необходимой версии:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr …

apg в Mac OS

apg - это генератор паролей как pwgen, только они запоминаются сильно легче.

Под Ubuntu он есть в репах, а в MacOS ставим так:

brew tap jzaleski/homebrew-jzaleski
brew install apg

Собираем логи из docker в GrayLog

logspout

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

Классический ELK я не очень люблю, а потому стал искать варианты, которые мне …

Копируем S3 баккет между AWS аккаунтами

S3

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

Что нам понадобится

  • Два AWS аккаунта (один для исходного баккета, второй для баккета назначения)
  • IAM пользователь в аккаунте с баккетом, куда мы будем копировать данные (тут есть документация …