Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Github RSS

Обзор

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



###Операционная система

Начнем с ОС, и да, это инструмент. В свое время, я получил дельный совет: “использовать на рабочем ПК систему того же семейства, что и на серверах”, стараюсь ему следовать и всем советую. На нынешнем месте работы, в качестве серверной ОС используется debian, поэтому на рабочей станции у меня стоит Mint. Не буду разглагольствовать, скажу только что ubuntu с unity и глючными обновлениями точно не вариант, а вот Mint вполне стабильная и при этом универсальная система. В качестве персонального компьютера я использую macbook pro, с предустановленной mac os (на данный момент El capitan). Mac дает мне unix-like систему с полноценными мультимедийными возможностями.

###Bash

Отдельно хочу выделить bash, это командная оболочка или интерпретатор, т.е. та штука которая ваши команды передает ЭВМ. Shell впринципе является очень мощным инструментом и многие, поняв его преимущества, уже не могут отказаться, а bash, в свою очередь, самый популярный, так как предустановлен на большинстве linux систем. На моем mac он также стоит по умолчанию. Многие вещи в bash можно немножечко оптимизировать, проще говоря облегчить себе жизнь.

Например, можно использовать alias’ы чтобы сокращать команды:

Примечание: здесь и далее я буду сокращать системный администратор до СА.

alias ll='ls -la' # более удобный вывод файлов, особенно для СА.
alias r='rails'   # когда активно работаешь с фреймворком
alias p='python'  # когда твой босс любит `python` и тебе приходится с ним работать
alias server='python -m SimpleHTTPServer > simplehttp.log &' # когда нужно быстро засервить файлы в текущем каталоге
alias 'new-bundler'='gem install bundler --no-ri --no-rdoc' # когда создаешь gemset под новый проект, первое что, обычно, требуется это бандлер
alias apt-get='sudo apt-get' # работать из под root - плохо, а вот сделать алиас на часто используемые команды - хорошо
alias digs='dig +short' # когда мне нужно узнать IP адрес по доменному имени, я хочу увидеть IP адрес, а не длинный вывод
alias cpr='rsync --progress' # копируем с прогрессбаром :)

Это только часть алиасов, которые я использую в повседневной работе. Остальные либо засекречены, либо узкоспециализированы. Для добавления алиасов в bash можно использовать специальную утилиту alias, а можно просто добавить их в файл ~/.bashrc.

В Debian в 8 версии (jessie), наконец добавили systemd, наконец, потому что в Fedora он встраивается с 15 версии. Я фанат systemd, так как это удобный и обширный инструмент, однако его команды управления меня угнетают. Вводить systemctl restart nginx.service вместо service nginx restart со временем надоедает. И тут на помощь приходят алиасы. Приведу только минимум:

alias start='systemctl start'
alias restart='systemctl restart'
alias stop='systemctl stop'

И теперь, для перезапуска сервиса достаточно набрать restart ntpd.service. Алиасы - вещь!

Также к bash можно отнести и PS1, это переменная которая отвечает за вывод приглашения терминала, такая строка, которая всегда отображается в начале ввода в shell. Про нее много говорить не буду, использую такую приблуду, которую допилил под себя.

###SSH

Мне кажется SSH это та вещь, которую можно настраивать бесконечно. Но общие моменты я все-таки запишу:

  • используйте ключи вместо паролей и посильнее (я генерирую 4096), а парольную авторизацию отключайте
  • настройте свой клиент ssh через файл ~/.ssh/config, например включив сжатие и поддержку соединения
  • используйте разные ключи для разных хостов без проблем через ~/.ssh/config:
Host host1.dev
  User first_user
  IdentityFile ~/.ssh/first_user_id_rsa
Host superdomen.net
  User second_user
  IdentityFile ~/.ssh/second_user_id_rsa
  • на сервере отключайте вход пользователя root через ssh и смените порт ssh на отличающийся от 22 (если только у вас не приватная сеть с контролируемым доступом)
  • хорошенько изучите все настройки этого гребаного файла ~/.ssh/config и используйте только те, которые действительно вам нужны

###Редакторы

Текстовый редактор, это вторая после терминала программа в которой СА проводит большинство времени, конфиги, программный код, логи - все это текст и с ним надо работать. Стоит различать два редактора, тот который используется в терминале и тот что на десктопе. Большинство выбирают что-то одинаковое или очень похожее, например mcedit очень напоминает обычный gui-шный блокнот, gvim и vim и т.д. Уверен и для emacs есть аналог с графическим интерфейсом. Я же разделяю декстопный и терминальный редакторы.

Vim - улучшенный vi, и он почти всегда есть в системе, редактор который создается для быстрой и удобной работы с текстом. Кастомизировать его, на мой взгляд, плохая идея, придется таскать конфиги, темы и плагины по всем серверам на которых работаешь. Поэтому я изменяю только два параметра: включаю подсветку синтаксиса и выставляю табуляцию в два пробела (согласно ruby style guides). Vim/vi кажется сложным, но если освоить хотя бы тривиальные возможности, работа становится эффективнее.

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

  • All autocomplete
  • Better build system
  • BracketHighlighter
  • GitGutter
  • GoSublime
  • Markmon real-time markdown preview
  • Package bundler
  • Package control
  • Predawn
  • Predawn Monokai
  • Ruby block converter
  • Ruby blue color scheme
  • Ruby on Rails snippets
  • Ruby pipe text processing
  • Ruby slim
  • SCSS
  • SublimeLinter
  • SublimeLinter-coffee
  • SublimeLinter-php
  • SublimeLinter-ruby
  • Theme - Spacegray

###Это не конец

Думаю, это обновляемая статья. Буду добавлять используемые инструменты/убирать не нужное. Так что смело проверяйте эту запись периодически, а лучше подпишитесь на RSS, если вам знаком сей инструмент.

#DevOps #Tools #Bash