Назад | Перейти на главную страницу

Какие вещи программиста должен знать каждый системный администратор?

Вдохновленный этот вопрос, Я спрашиваю обратное: что нужно знать системным администраторам о программировании? Более конкретно, какие инструменты программирования полезны для системного администратора?

  • Контроль версий. Уметь создавать, читать и применять патчи. Знайте, как использовать систему контроля версий, которая представляет версии для всего репозитория, и почему вам она нужна. Знайте, как составлять описательные журналы изменений и почему они вам нужны. Знайте, как искать в журналах репозитория ключевые слова и временные рамки.
  • Сценарии. Сделайте что-нибудь один раз и продолжайте свой путь. Сделайте это дважды или больше, сделайте это один раз, а затем напишите сценарий.
  • Отладка. Знайте, как читать трассировку стека и как сообщать об ошибках в службу поддержки вашего программного обеспечения. Найти ошибку приятно и полезно, но зная как чтобы исправить это, может потребоваться много вложений в чтение кода. Делайте то, что легко для вас, и позвольте им делать то, что им легко.
  • Тестирование. Постоянно отслеживайте и регистрируйте ошибки. При использовании в сочетании с контролем версий и тестированием вы имеете четкое представление о том, что могло пойти не так, когда и что изменилось. Следите за производством и подготовкой.
  • Экспертная оценка. Предлагать и анализировать изменения в производственных системах. Протестируйте предварительную подготовку, определите, что именно необходимо сделать, и запишите, какие услуги могут быть затронуты и как долго. Не позволяйте Управлению изменениями деградировать до политической битвы за бюрократическую власть.
  • Изучение криптографии. За сетевые ресурсы отвечает современный системный администратор; Добавление безопасности в качестве последнего шага - это нечто среднее между невозможным и очень дорогим предложением. Понимание криптографии с открытым ключом, методов обработки паролей и шифрования в целом будет чрезвычайно полезным.

Я бы начал с:

  1. Как писать больше, чем самые простые сценарии, независимо от языка. Автоматизация - ваш друг.
  2. Как запустить отладчик / знать, как читать какие-то отчеты о сбоях: это значительно упрощает выяснение отчета о сбоях и того, кого спрашивать, что за черт.
  3. Контроль версий - не только для кода, но и для всего, что стоит вести историю или контролировать изменения.

Системное администрирование - это просто программирование. Система управления конфигурацией позволяет вам видеть всю вашу инфраструктуру как распределенную машину. Ваша задача как системного администратора - программировать эту машину.

Знай один текстовый редактор. Обычно vi для системных администраторов, emacs для программистов.

Умейте писать сценарии. Выберите язык сценариев. Perl - неизменный фаворит, как и комбинация shell / sed / awk. Ruby и Python могут работать, но для многих вещей объекты - неправильная парадигма.

Уметь писать читаемую документацию.

Контроль версий. Решающее значение для поддержки файлов конфигурации и контрольных журналов.

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

Научитесь использовать отладчик (или другое) и ведение журнала.

Научитесь использовать СУБД. Существует множество требований к обработке данных, которые можно упростить, если правильно использовать СУБД. Даже возможность переключиться на роль администратора базы данных по запросу может творить чудеса.

Протестируйте перед развертыванием. Ознакомьтесь с философией разработки через тестирование.

Парное программирование - это хорошо. Попросите кого-нибудь посмотреть через ваше плечо, чтобы узнать / посоветовать / исправить.

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

  • Умею программировать. Да, это важно: как сказал один из комментаторов, если вы делаете это более одного раза, то напишите сценарий - и напишите его хорошо.
  • Знайте инструменты, включенные в стандартную установку операционной системы. Для администраторов UNIX это означает такие инструменты, как Korn Shell (ksh), Perl и vi. Не полагайтесь на присутствие Emacs, Ruby, Tcl или C.
  • Знай сеть. Как собираются пакеты Ethernet? Как выглядит пакет? Какие бывают типы пакетов? Познакомьтесь с такими инструментами, как tcpdump, wirehark, snoop и другими.
  • Напишите переносимый код. Если код будет работать под Linux - и Tru64 - и Solaris - и OpenVMS - напишите переносимый код. Даже если он будет работать только под двумя версиями UNIX - сделайте его переносимым. Но тогда, если он не должен быть портативным, не тратьте на него лишнее время.
  • Знайте, где находится документация. Для Perl это означает perldoc, Perl Mongers, perl.org и т. Д. Для ksh это означает страницу руководства и ваши любимые книги по оболочке Korn.
  • Документ, документ, документ, документ! Документируйте свой код, создавайте справочные страницы, создавайте встроенную документацию Perl и все остальное, что подходит. Объясните, как пользоваться программой и почему вы ее так написали.
  • Знайте инструменты упаковки вашей системы. Знайте, как создавать RPM для Red Hat, депо HP-UX или пакетов Solaris: это позволит вам создавать пакеты для ваших систем и, таким образом, интегрировать их в процесс установки.

Сценарии важны, но я бы поддержал совет, что знание некоторых «настоящих» языков - определенный бонус. Например, вы можете делать очень полезные вещи с помощью пространства имен .NET System.DirectoryServices.

Я программист и старший админ / интегратор. Чтобы работать там, где я работаю, вам необходимо знать следующее:

  • Как писать сценарии оболочки (POSIX, без башизмов), немного Perl, немного Python
  • Базовый C (одна спецификация UNIX)
  • Как установить цепочку инструментов компилятора
  • Как создавать библиотеки и другие проекты OSS из исходников
  • какой Валгринд есть и как его использовать для обнаружения утечек памяти
  • Как накатывать пакеты .rpm и .deb
  • Пока мы не требовать это, немного PHP и немного LISP не повредит

Большинство младших администраторов могут взглянуть на одного из наших программистов и сказать (со знанием дела): да, я установил его правильно, вот где у вас утечка, поэтому код, который вы только что запустили, ломается. Или "Нет, это не наша версия MySQL, посмотрите здесь свой запрос ... "

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

Таким образом, быть хорошо округленным - это никогда собирается причинить тебе боль.

Много-много лет назад (на самом деле Windows NT 3.1) я начинал как программист, специализирующийся на написании служб и даже на случайных драйверах устройств. Это означает, что вы очень хорошо знакомы с ядром Windows. Со временем мне немного надоело программирование, и я переключился на управление сетью. Я обнаружил, что мой опыт в программировании был чрезвычайно ценным снова и снова.

Дело не только в том, что написание сценариев VBScript относительно безболезненно. Знание того, как работает Windows, и особенно того, как работает IP, очень помогает в решении необычных проблем с сервером и сетью. Также это образ мышления. Программисты привыкли к документации и контролю версий, и меня ужасает то, что многие администраторы Windows просто попробуют что-то, чтобы убедиться, что это работает, и беспокоятся о том, чтобы потом распутать беспорядок.

Все очень хорошо, но советовать уходить и работать программистом десять лет - не очень полезный совет! Однако я думаю, что большинству системных администраторов было бы полезно иметь некоторый опыт программирования на «жестком» языке, таком как C ++ или C #. А если в вашей организации есть ручные программисты, пейте вместе с ними!

Джон Ренни

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

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

При всех приведенных здесь описаниях я не собираюсь говорить, что я системный администратор. Но то, что я построил и управляю парочкой серверов windows / linux, я должен кое-что признать:

  • в linux необходимо знать сценарии bash - лучше, если вы знаете, как интегрировать их с perl / awk / etc. Я обнаружил, что с его использованием многие задачи стали проще.

  • Знание программирования на C / C ++ очень помогает. Иногда вам нужно изменить исходный код GNU (если вы его используете) в соответствии с вашими потребностями, потому что превращение в продукт GNU не гарантирует, что вы всегда будете получать необходимую помощь вовремя - и во многих случаях они написаны на C / C ++.

  • SQL - все работает с базами данных
  • Программирование - язык не имеет значения, пока вы понимаете логику и процесс, вы можете изучить и приспособиться к любому языку.
  • Как КОД ДОКУМЕНТОВ и ИЗМЕНЕНИЯ - это огромное количество. Сколько раз вы застряли, глядя на конфигурацию, пытаясь понять, какого черта кто-то сделал это и на что это повлияет, если мы вернем ее обратно. Это выходит за рамки всего, что вы кодируете или скриптируете, это касается, когда вы вносите изменения в настройки брандмауэра для обработки крайнего случая, когда пользователь X получает электронную почту из домена Y во вторник днем, когда идет дождь. И это может быть не вы, это может быть PFY, который решит пойти дальше и сделать это, а затем должен будет позвонить вам в 2 часа ночи в отпуск, потому что все сломалось ужасным образом.
  • Системные языки - в Windows это такие вещи, как Powershell и WMI, которые позволяют вашим языкам сценариев подключаться к некоторым довольно мощным ресурсам и делать что угодно на ПК. Unix / Linux имеет свой собственный набор инструментов, о котором я не могу говорить.

Знание того, как подключиться к вашему LDAP и получить необходимую информацию на выбранном вами языке сценариев, является ключом ко всему, от устранения неполадок до реального активизации различных типов автоматизации (обеспечение учетных записей и ресурсов, более интеллектуальные проверки учетных записей пользователей или компьютеров).

Может показаться простым, но я видел множество магазинов хлеба с маслом, где люди не думают, что им нужно такое системное администрирование. Множество мест тратят большие деньги на большие наборы административных инструментов, и, насколько я могу судить, 95% того, для чего они используют эти инструменты, можно было бы сделать за несколько часов написания сценариев, если бы кто-нибудь знал об этом или знал, как это сделать. сделай это.

Я обнаружил, что знание сценариев bash, dos batch и powershell предоставляет системному администратору фреймворк, который может делать что угодно в любой популярной системе.