SSH Config

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

Представим ситуацию:

ssh -p 22 user@host1  

Для 1 сервера набирать недолго, запомнить легко. А теперь представим 30-40-50 разных машин, с разными портами, именами пользователя и ip адресами. В итоге имеем файлик:

ssh -p PORT_NUMBER user1@host1 # dev  
ssh -p PORT_NUMBER user2@host2 # prod  
...
ssh -p PORT_NUMBER user100@host100 # prod100  

Ctrl+C и Ctrl+V и погнали. Но это не круто, поэтому в .bashrc или .zshrc добавляются алиасы:

alias dev='ssh -p PORT_NUMBER user1@host1'  
alias prod1='ssh -p PORT_NUMBER user2@host2'  
...
alias prod100='ssh -p PORT_NUMBER user100@host100'  

Уже лучше, но оказывается можно и еще круче. Тут нам поможет ssh config, подробная документация тут.

2 варианта использования:

  • /etc/ssh/ssh_config – на всю систему
  • ~/.ssh/config – для пользователя

Рассмотрим последний. Создаем и заполняем:

# dev machine
Host dev  
  HostName 127.0.0.1
  Port 22
  User username

Теперь мы можем набрать ssh dev и попасть на машину. Если надо пробросить ключи на сервер добавляем:

# dev machine
Host dev  
  HostName 127.0.0.1
  Port 22
  ForwardAgent yes
  User username

Можно указать настройки для группы серверов. Предположим на всех production серверах у вас перевешен порт ssh со стандартного 22 на 2222. Пользователь везде одинаковый и везде хотим пробрасывать ключи на сервер.

Host prod*  
  ForwardAgent yes
  Port 2222
  User username

Host prod1  
  HostName 10.0.0.1

Host prod2  
  HostName 10.0.0.2
...
Host prod100  
  HostName 10.0.0.100

Бонус - автокомплит. Набираем ssh, нажимаем Tab и показывается список хостов из конфига. Профит. Из минусов - нельзя делать include других файлов конфига, тогда можно было бы отлично комбинировать файлы с личными серверами и рабочими.

Прочитать

Neovim

На новогодних праздниках хочется выбраться из синей ямы и заняться чем-то полезным. Давнее желание - собрать свой Vim с блэкджеком, подошло идеально. Задача полезнее бутылки пива (подставь любой алкогольный напиток), поэтому поехали. По ходу переезда вспомнил про Neovim и решил попробовать.

С самого начала я был на сборке Janus. Отличная вещь для начинающих и незаморачивающихся. Взял велосипед, обновил немного рулевое управление и переключение скоростей, и гоняй себе на здоровье.

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

Не разбирался в различиях между менеджерами плагинов (зависимостей), выбирать пришлось между Vundle и Vim-Plug. Первый многими используется, но мало поддерживается своим создателем. Второй - изначальный форк, но с кучей приятных улучшений, типо lazyload плагинов по необходимости, а также параллельной загрузкой и установкой. Последняя фича - достаточно сомнительное преимущество. Актуальна только при переезде на новый комп.

Как устанавливать Neovim рассказывать бессмысленно, я ставил через brew.

А вот при первоначальной загрузке отловил несколько интересных вещей.

  1. конфигурация лежит в ~/.config/nvim/init.vim
  2. без создания файла ~/.nvimrc мой конфиг не читался (почему так произошло до сих пор для меня загадка)

2ой пункт решил созданием symbol link на init.vim.

Еще одна проблема - неправильный код при нажатии Ctrl + h. Это нужно для переключение между окнами, например с NERDTree. В iTerm сделал так.

Вот так это решается.

Пока у меня не получилось прикрутить YCM, но работать уже можно.

Выводы - Neovim хорош, но сыроват. Сложно найти решение проблем применительно к нему. С Vimом полно обсуждений и блогов. Стоит ли обновляться - решать вам.

P.S. Разработчик neovim сделал очень круто. Вбросил на kickstarter (или схожем ресурсе) про новый vim, собрал начальный капитал, чтобы работать над ним full-time, а теперь каждый месяц собирает по $4-5k, чтобы дальше над ним работать. Учитесь.

Прочитать

[Mac OS]: Как собрать свой Sparrow Lite

Сегодня случайно узнал как получить себе экземпляр супер крутого mail клиента совершенно бесплатно, безсмсиабонентскойплаты, но с рекламой. Это по сути версия Lite, которая была раньше в AppStore, но теперь отсутствует. Нашел ссылки на скачку на brokenstones, когда хотел скачать полную версию на халяву)

Для этого не требуется супер знаний, а всего навсего:

  • скачать 20Mb из интернета
  • наличие Xcode

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

Идем вот сюда, где читаем, что т.к. Sparrow создана с использованием некоторых OpenSource продуктов, то они(разработчики) сделали возможность скачать исходный код приложения совершенно бесплатно в связи с пунктом бла-бла-бла...

В общем качаем по ссылке для мака. Это zip архив на 20Mb. Не обеднеете я думаю. Распаковываем куда-нибудь, заходим в директорию и видим нам несколько вложенных директорий и файлов, для начала:

chmod +x build-mac.sh  

Это даст права на исполнение файлу сборки проекта. Далее открываем этот файл вашим любимым редактором.

vim build-mac.sh  

Находим 3ю строчку:

xcodepath=/Applications/Xcode45-DP2.app  

Здесь необходим поправить путь до своего Xcode, у меня это было

xcodepath=/Applications/Xcode.app  

После чего сохраняем файл и выходим. Собираем проект:

./build-mac.sh

Вот собственно и все. Далее заходим в папку app, это уже можно сделать через finder, открываем приложение Sparrow внутри, оно предложит скопировать себя в папку Applications ну и далее все как обычно. Вуаля, у вас есть свой экземпляр Sparrow.

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

Прочитать

Рабочее окружение на чистой системе: RVM+Ruby+GIT+Homebrew

Пришлось разворачивать рабочее окружение на новой чистой системе (Mac OS X 10.8.2), хотел написать красивый туториал с картинками, пока не наткнулся вот на этот. Тут все описано как раз красиво и хорошо. Советую посмотреть тем, кто разрабатывает на Ruby.

Для полного комплекта надо еще поставить git flow extension, настроить алиасы и установить vim (тут конечно по желанию). Все, что может пригодиться тут. Даже больше, много статей по тематике и просто best practics.

Поставил себе красивую тему в vim. Сначала надо установить правильные цвета в терминале, в этом нам поможет данный репозиторий. Импортируйте настройки темы в терминал и будет вам счастье. Потом не забудьте сгенерировать и добавить в git ssh ключи. Далее развернем Vagrant:

gem install vagrant

будем ставить squeeze 64( 264 Mb придется скачать):

vagrant box add work_squeeze http://dl.dropbox.com/u/937870/VMs/squeeze64.box

Создадим структуру папок в home директории и инициализируем vagrant:

mkdir -p ~/vagrant/workvm/  
cd ~/vagrant/workvm/  
vagrant init  

теперь у нас есть файл с начальными настройками Vagrant. Большая часть настроек по дефолту закомментирована, укажем сразу название нашего образа config.vm.box = «work_squeeze», и начнем постепенно заполнять остальное.

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

Прочитать