Обзор
По большей части моя работа относится к системному администрированию, но зачастую мне приходится изменять программный код на разных языках. В этой записи я хочу зафиксировать подборку инструментов, которыми пользуюсь.
Операционная система
Начнем с ОС, и да, это инструмент. В свое время, я получил дельный совет: “использовать на рабочем ПК систему того же семейства, что и на серверах”, стараюсь ему следовать и всем советую. На нынешнем месте работы, в качестве серверной ОС используется Debian, поэтому на рабочей станции у меня стоит Mint. Не буду разглагольствовать, скажу только что Ubuntu с Unity и глючными обновлениями точно не вариант, а вот Mint вполне стабильная и при этом универсальная система.
В качестве персонального компьютера я использую Apple Macbook Pro, с предустановленной MacOS (на данный момент El capitan). Mac дает мне Unix-like систему и с консольными, и с мультимедийными возможностями. Т.е. я использую ssh и многие другие терминальные команды как в Linux, но при этом могу полноценно использовать Adobe Photoshop и Final Cut Pro X.
UPD 26.08.2018: сейчас работаю на своем Mac
Bash
Отдельно хочу выделить Bash, это командная оболочка или интерпретатор, т.е. та штука которая ваши команды передает ЭВМ. Shell в принципе является очень мощным инструментом и многие, поняв его преимущества, уже не могут отказаться, а Bash, в свою очередь, самый популярный, так как предустановлен на большинстве Linux систем. На моем Mac он также стоит по умолчанию. Многие вещи в Bash можно немножечко оптимизировать, проще говоря облегчить себе жизнь.
Например, можно использовать alias’ы чтобы сокращать команды:
Примечание: здесь и далее я буду сокращать системный администратор до СА.
Это только часть алиасов, которые я использую в повседневной работе. Остальные либо засекречены, либо узкоспециализированы. Для добавления алиасов в bash можно использовать специальную утилиту alias
, а можно просто добавить их в файл ~/.bashrc
.
В Debian в 8 версии (Jessie), наконец добавили systemd, наконец, потому что в Fedora он встраивается с 15 версии. Я фанат systemd, так как это удобный и обширный инструмент, однако его команды управления меня угнетают. Вводить systemctl restart nginx.service
вместо service nginx restart
со временем надоедает. И тут на помощь приходят алиасы. Приведу только минимум:
И теперь, для перезапуска сервиса достаточно набрать restart ntpd.service
. Алиасы - вещь!
Также к Bash можно отнести и PS1, это переменная которая отвечает за вывод приглашения терминала, такая строка, которая всегда отображается в начале ввода в shell. Про нее много говорить не буду, использую такую приблуду, которую допилил под себя.
UPD 26.08.2018: На MacOS я использую iTerm2 + Zsh + Oh My Zsh
Маленькие утилиты
Добавлено 15.01.2019. Заголовки кликабельны
Icon Ping
Со временем я начал использовать небольшие утилиты для облегчения жизни девопса. Например очень полезной считаю маленькую иконку в трее, которая горит зеленым если подключение к интернету есть, красным если его нет и желтым если идет подключение. Такой себе светофор, который позволяет быстро оценить обстановку.
Ссылка
stts
Это такой агрегатор status страниц разных облачных сервисов прямо у вас в трее. Список сервисов для мониторинга можно настроить под себя. Когда сервис падает или возвращается появляется всплывашка. Я мониторю Amazon, Atlassian, Bitbucket и другие сервисы, которые используются у нас в OneTwoTrip.
Ссылка
Clipy
Следующую утилиту, я подсмотрел у одного тестировщика. Она позволяет хранить историю буфера обмена. Это оказалось спасательным кругом, о котором я давно мечтал. Теперь могу скопировать логин и пароль в одной программе и вставить в другую за один цикл переключения между окнами.
Ссылка
Scroll Reverser
Последняя утилита на сегодня, это разворачиватель прокрутки. Это конечно уже совсем не DevOps утилита, но она офигеть как помогает в ежедневной работе. Дело в том, что тачпад макбука имеет инвертированную прокрутку, чтобы пролистывать контент нативным движением “как на iPad”. Но если подключить USB мышь, прокручивание колесика будет скролить в обратную сторону. В MacOS из коробки нельзя настроить разное поведение для тачпада и внешней мыши. Я считаю, что без этой утилиты пользоваться тачпадом и внешней мышью без боли невозможно.
Ссылка
Больше
Все утилиты которые я перечислил, являются бесплатными и по большей части Open Source. Больше таких утилит можно найти здесь
SSH
Мне кажется SSH это та вещь, которую можно настраивать бесконечно. Но общие моменты я все-таки запишу:
- используйте ключи вместо паролей и посильнее (я генерирую 4096), а парольную авторизацию отключайте
- настройте свой клиент SSH через файл ~/.ssh/config, например включив сжатие и поддержку соединения
- используйте разные ключи для разных хостов без проблем через ~/.ssh/config:
- на сервере отключайте вход пользователя 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
UPD 26.08.2018: Несмотря на то, что я уважаю продукты компании JetBrains и иногда их использую, в частности Rubymine и Goland, Sublime по-прежнему остается моим основным редактором из-за его скорости.
Docker
Docker это обвязка для легковесной виртуализации на базе контейнеров. Очень крутой инструмент, который позволяет запускать изолированные и подготовленные среды для большого количества задач. Один из кейсов, в котором я часто использую докер, это запуск какого-либо ПО без необходимости устанавливать в систему зависимости для него, например проекты на Python или других языках программирования.
Это не конец
Думаю, это обновляемая статья. Буду добавлять используемые инструменты/убирать ненужное. Так что смело проверяйте эту запись периодически, а лучше подпишитесь на RSS или мои профили в социальных сетях из списка слева.
#DevOps #Tools #Bash #TechAndDev