Система Wiki, с которой я больше всего работал, называется TWiki (http://www.twiki.org). Ее основным достоинством является управление доступом на добавление. Есть и другие системы — от чрезвычайно простых (одна из них написана на языке awk) до полнофункциональных. Некоторые крупные системы включают в себя технологию Wiki как одну из функциональных возможностей, другие целиком построены на концепции Wiki, например изумительная всеобъемлющая энциклопедия с открытым доступом — Wikipedia (http://www.wikipedia.org).
Резюме
• Хранилище документов — прекрасный инструмент тайм-менеджмента.
• Хранилище, ориентированное на клиентов, предоставляет им необходимую информацию, и они меньше беспокоят вас.
• Хранилище для внутренней ИТ-информации позволяет вам организовать справочный материал для экономии времени впоследствии. Особенно полезными могут оказаться технологические карты — короткие заметки о том, как следует выполнять сложные процедуры, — вашим коллегам не придется изобретать велосипед.
• Хорошо задокументированную процедуру легче делегировать другому сотруднику. Это позволит вам вычеркнуть пункт из своего списка дел, поручив эту процедуру кому-то другому.
• Технология Wiki облегчает доступ к хранилищу и не требует знания HTML. Позволив всем пользователям редактировать (почти) все страницы, вы добьетесь того, что страницы будут содержать самую свежую информацию.
• Создавать хранилище документов для группы системного администрирования не так страшно, как может показаться. Выбирая, что именно документировать, вы управляете масштабом хранилища. Приведенные в этой главе образцы помогут вам в начинании. Технология Wiki позволяет документам динамически расти и развиваться.
• Часто бывает трудно составить новый документ. Технология Wiki облегчает задачу разработки нового документа, создавая для вас все ссылки. Первоначальный документ может быть простой технологической картой, которая впоследствии будет дополняться. Вам совсем не обязательно с самого начала создавать безупречный документ. Напишите то, что важно в данный момент, и позвольте документу развиваться.
Личное хранилище информации
Некоторые сведения мне хочется иметь под рукой, где бы я ни находился, но памяти портативного компьютера недостаточно для их хранения. Я не стремлюсь к тому, чтобы эта информация была доступна всегда и сразу, но желательно иметь к ней хоть какой-то доступ. Размещение в Сети делает ее доступной почти из любого места, особенно по мере распространения технологии WiFi. Установить каталог, защищенный паролем, достаточно просто.
Часть информации я держу в хранилище Subversion. Подобно CVS и Microsoft SourceSafe, технология Subversion позволяет мне читать и обновлять информацию в хранилище из любой точки сети. Технология Subversion часто применяется для хранения исходного кода и отслеживания изменений. Теоретически, где бы я ни находился, я могу либо загрузить последнюю версию хранилища, либо обратиться через SSH к компьютеру, у которого есть связь с хранилищем. В личном хранилище я держу очень большую адресную книгу и некоторую другую информацию.
13
Автоматизация
Автоматизация наших задач — отдельное удовольствие. В какой еще профессии можно запрограммировать машины, чтобы они делали за нас нашу работу? Ах, если бы это было так просто! Автоматизация задачи требует времени, но выигрыш может быть огромным.
Я не собираюсь здесь давать уроки Perl, Python, Ruby, UNIX shell, VBasic или Kix32. В этой главе я расскажу зачем, что и как следует автоматизировать. Кроме того, я приведу фрагменты кода, которые помогают мне в работе уже много лет.
Достоинство автоматизации очевидно. Она сокращает нам объем работы, потому что автоматизированная задача требует от нас меньше внимания и времени или, благодаря «хрону» (cron) UNIX или планировщику Windows, выполняется автоматически, без нашего участия. Неожиданным положительным эффектом автоматизации является простота делегирования автоматизированной задачи. Любая задача, которую вы переложили на кого-то другого, уже является маленькой победой.
Достаточно ли автоматизирована ваша работа?
Адам Московиц (Adam Moskowitz), известный сисадмин, сказал мне, что для него «лакмусовой бумажкой» уровня автоматизации является возможность поручить работу менее квалифицированному сотруднику. Например, в одной фирме он автоматизировал задачу ежедневного резервного копирования диска до такой степени, что замену ленты могла выполнить секретарша. Каждый день система отправляла ей и Адаму электронное сообщение с отчетом о статусе резервного копирования, проведенного предыдущей ночью. Как правило, в сообщении содержались указания, какую ленту следует заменить. Если происходил какой-то сбой, секретарша знала, что ничего не следует предпринимать, пока Адам не устранит проблему сам. Со временем он усовершенствовал процедуру так, что система автоматически справлялась со все большим количеством аварийных ситуаций. В конце концов он добился, что система могла работать без его вмешательства месяцами.
В этой главе терминами «сценарий» и «программа» я буду обозначать разные понятия. Сценарий — это короткая программа, возможно всего из нескольких строк. Типичным сценарием является ВАТ-файл, несколько строк на языке Perl или небольшой shell-файл UNIX. Программой я буду называть более длинные программы, разработка которых требует обдумывания и планирования. Как правило, формальный процесс создания программы включает сбор требований, разработку и тестирование. Программы обычно пишутся на компилируемых языках, таких как C++. Интерпретируемые языки, вроде Perl, тоже подходят для создания больших программ, но используются реже. Программисты, пишущие на языке Perl, называют свой код сценарием, если он невелик, и программой, если код имеет значительный объем.
Что автоматизировать?
Трудно найти время для автоматизирования процессов, поэтому приходится выбирать. Мы не можем автоматизировать всю нашу работу. Задачи, встающие перед системными администраторами, распадаются на четыре общие категории:
• Простые задачи, выполняемые один раз. К первой категории относится большая часть вашей повседневной работы. Если задача проста и вы выполняете ее один раз, нет смысла ее автоматизировать. На автоматизацию уйдет больше времени, чем на саму задачу.
• Сложные задачи, выполняемые один раз. Вторая категория включает задачи, достаточно сложные, чтобы выполнить их с первой попытки, поэтому, оформив последнюю (работающую) последовательность команд в виде сценария, вы получите инструкцию для ее следующего выполнения. Если вам понадобилось сделать что-то один раз, когда-нибудь придется делать это еще. Задачи этой категории состоят из длинных последовательностей команд, причем каждую команду лучше тестировать отдельно, постепенно строя цепочку из работающих команд. После этого вы сможете использовать эту последовательность с уверенностью, что она работает.
• Простые задачи, выполняемые часто. Третья категория — очевидный случай, здесь отдача от автоматизации будет максимальной. Время, потраченное вами на автоматизацию процедуры, вскоре окупится, потому что вы будете выполнять задачу снова и снова. Всегда автоматизируйте скучные и повторяющиеся дела.
• Сложные задачи, выполняемые часто. Четвертая категория — ловушка для системных администраторов, которые часто взваливают на себя больше, чем могут нести. Эта категория требует, чтобы вы убедили руководство в необходимости выделить ресурсы (время и деньги) на решение проблемы. Результатом может быть покупка коммерческого программного продукта, интеграция бесплатных инструментов и/или инструментов с открытым кодом в вашу систему или разработка собственного решения.
Теперь, специально для читателей, мыслящих зрительными образами, приведу эти категории в виде таблицы (рис. 13.1).
Рис. 13.1. Категории задач системного администрирования
Многие удивляются, узнав, что я автоматизирую простые, но часто выполняемые задачи. Если задача проста, зачем ее автоматизировать? Я автоматизирую многие процессы из второй и третьей категории — от крупных задач до небольших последовательностей команд — по одной причине. Автоматизация процесса придает ему повторяемость и масштабируемость, гарантируя выполнение без ошибок:
• Повторяемость означает, что я могу многократно выполнять этот процесс. Например, устанавливая новые компьютеры, я хочу, чтобы все они запускались с одной конфигурацией программного обеспечения и с одинаковыми настройками. В противном случае обслуживание этих компьютеров превратится в кошмар. Если я автоматизирую процесс установки, он станет повторяемым, и все компьютеры будут иметь одинаковую конфигурацию. Если у меня какой-то процесс работает, я хочу, чтобы он каждый раз работал одинаково.