Пока на больничном, есть свободное время, решил записать воспоминания про олимпиаду для Linux-администраторов - а то уже не всё помню. В этом году её честно назвали олимпиадой для Linux-администраторов, и я, будучи фряшником, хотя сомневался, всё-таки пошел попробовать. Попробовал очень даже неплохо :) Причем, что любопытно, очень даже неплохо из BSD-админов "попробовал" не только я: если во 2-й тур прошло 5 человек из 36 с канала #freebsd (shattered, dmn42,
Jay, imax и ваш покорный слуга) - то в финал пробралось четверо из них. Четверо из десяти. По-моему, эти 40% на чисто линуксовой олимпиаде вполне подтверждают тезис о том, что BSDшники профессиональнее =) Причем дело не в том, что эти люди просто "случайно" оказались универсалами, знающими несколько платформ (и случайно завсегдатаями канала #freebsd). Они, как и я, еще и предпочитают эту систему, а лично я - так и вообще имел не так много опыта с другими системами. Мой опыт общения с линуксами в основном ограничивается SLES на вычислительном кластере родного политеха. И сусю эту предписывалось трогать как можно меньше (суппорт, мол, есть), и был этот кластер толком никому не нужен - увы, провинциальные реалии... так что мы большую часть времени занимались если не виндой и суппортом не умеющих писать на Си юзеров, то, кхм, саморазвитием (и отнюдь не по линуксовой части).
Но обо всём по порядку. Первые игры олимпиады - вопросы по теории, но это лишь отсев, а не что-то, способное действительно показать профессионалов в отрасли. Определяет практика, и первая практика на олимпиаде началась во втором туре. 25 октября нужно было починить, кроме мелочей, LDAP, Джумлу и Друпал (да, мне тоже было смешно), в виртуалках, доступ в которые был сделан через веб - типа консоль tmux. Видимо, специально затем, чтобы больше времени потратили - все ж к screen привыкли. Эта игра глючила и глючила, и довольно быстро вообще прекратилась, поскольку кто-то нашел дырку в реализации организаторами доступа к tmux через web - и пробрался из виртуалку и хост-машину, где еще и ответы лежали. Так что игру отменили, и я уже даже не помню, что там было.
Повторная игра 2-го тура была 27 октября, вот там уже был человеческий VNC. Правда, интерфейс "старт/стоп виртуальной машины" был сделан на вебе неудобно, впрочем, то мелочи (хотя у некоторых они вызвали большие нарекания). Итак, "физическая" консоль виртуалки по VNC, в виртуалке - Убунта. Тщательно сломанная (вообще это уровень уже даже не финала, а суперфинала прошлого года), настолько, что паникует при загрузке. И надо её починить - мониторинг снаружи проверяет сервисы этой машины, которые должны работать (ессно, пока на ней нет поднятой сети, всё горит красным). Сделать надо всё за 1 час, чем больше и раньше других сделано - тем выше место в таблице участников.
Вот тут начинается самое интересное. Я эту Ubuntu, как и вообще современный Линукс, видел вживую впервые в жизни. Камрад Jay
описал чуть спустя то, что на этой игре было по заданиям. А у меня было интересное психологическое состояние, и многие из обсуждавшихся вещей меня удивили - я их не заметил, хотя и решил. Наверное, ближе всего будет описать это состояние, как "танк, рвущийся на прорыв через препятствия". Воля к победе, боевой дух, решимость, как её там еще?.. Короче, время пошло, взлетаем.
Итак, grub исправлен, неизвестный пароль рута обойден, система в сингле. Первым же делом набираю ls, чтобы осмотреться, и получаю болт. Странно здесь то, что ls был лишь пятым в списке
проверок мониторинга, как будто он не нужен (новое поколение пользуется только mc что ли?..). Но ладно, надо поставить ему chmod +x, тот тоже обламывается, но я не стал смотреть почему, а сразу влепил chattr -i /bin/ls. Помогло, едем дальше. На машине 2 интерфейса, eth0 и eth1, после краткого разбирательства, как тут инит-скрипты пускать, заработала сеть - к счастью, адрес тут же был получен по DHCP, и типа всё ОК. Так что я не стал смотреть на второй интерфейс, а после игры с удивлением узнал, что это так хитро именованный бридж.
Адрес есть, но сеть, конечно, не работает. Иду в конфиги, громко ржу со строчки "#vsem chmoki v etom chatike :)", прямо перед ip rule ... unreach from all. Ребята отожгли. По админской привычке делать всё
правильно сначала правлю конфиги, и только потом применяю эти же команды в консоли (поступаю так же с чем-то еще). Логика для production "проверь, всё ли будет корректно после ребута, этим самым ребутом" неожиданно себя оправдала немедленно - ВНЕЗАПНО машина упала в пакнику, как оказалось, по крону, там модуль ядра для этго грузился. Но это сослужило мне добрую службу: если у других из-за этого крона всё снова становилось в мониторинге красным, и приходилось делать те же действия заново, теряя время - я после ребута получил сразу готовую настроенную сеть.
Далее sshd. Что с ним? А вручную? Ах либы. Не глядя, херачу ldconfig с нужными параметрами, и всё заводится. Потом удивлялся, что у других разбирательство заняло энное время.
Это "херачу не глядя, и после кувалды всё работает" было еще не раз. Например, еще до первой паники, ползая в поисках по конфигам, наткнулся на сохраненные правила iptables и просто вычистил их, не читая. В итоге у меня отдельный пункт в мониторинге поднялся сразу же с сетью, без траты на него времени. Так было и в других местах. Просто делаешь так, как должно быть, не глядя на то, как было.
Правда, под конец это горячее напряжение начинает давать сбои. Я очень много времени убил на проблему с DNS. Что ж такое-то, в tcpdump запросы вижу, ответа от сервера не вижу. Попробовал другие за пределами сети - да, NAT есть, даже ya.ru по IP-шнику, резольвленному на домашней машине (вручную набрал), пингуется. А от любого внешнего сервера нет ответов. Что же это, в Яндексе зафайрволили ответы именно DNS?.. Вспоминаю по первому туру про ebtables, и вот тут - нервы - несколько раз жму ebtables -list, не понимая, что ж ему надо-то. Хотя, конечно, я на этом всего полминуты потерял, дальше убил нахуй правило - всё, работает.
А там нервы неспроста, интрига, болельщики беснуются, ирц орет хайлайтами - мол, ты постоянно с 10 на 11 место летаешь. Мне сравнительно пофиг, я дальше ломанулся посмотреть lighthttpd, посчитав (наивно), что там где-то в конфиге ошибка, и за 5 минут, никогда с ним не работав, я могу успеть. Увы, нет, я успел оценить только то, что с конфигом всё в порядке, как тут VNC-соединение закрылось - время истекло. Пришла пора расслабляться и унимать мандраж - в последние секунды идущий передо мной игрок опять намудрил, и я остался на 10 месте.
Дальше был, гм, цирк, связанный с не вполне корректным, на мой взгляд, подходом к отбору. Я и человек на 9 месте апелляций не подавали, потому что мы были уже, как говорится, "фдисятке и ниибёт". На что там подавать? Что я взялся не за то из заданий, хотя мог бы починить? Так это моя проблема, всё честно. А вот люди на 11 и 12 месте апелляции подали, и их удовлетворили. Дескать, мониторинг кривой, всё такое. В итоге мы поменялись местами. И даже в
логе трансляции нас поменяли местами, хотя уж там-то не результаты, там всё должно быть так, как было на момент окончания игры. У меня где-то даже копия валялась сохраненная, но фиг бы уж с ним... В клубе олимпиады предлагал просто в таких спорных вопросах взять всех, кто сделал более 60%, в соответствии с критериями прошлых туров. Это бы как раз 12 человек и вышло. Там вообще хоть что-то сделать из 36 человек смогло только 14, вполне честный отбор был бы, мне кажется.
Но ладно. Через несколько дней ноября Яндекс внезапно спрашивает меня почтой, что вот, 1 человек отказался, а другой по каким-то техпричинам не может, и вы проходите. Окей, 10 число, чемодан-аэропорт-Москва. Сама олимпиада 11 числа, и туда я взял болельщицу - быть живым талисманом FreeBSD для всех нас фряшников там ;) Мои
несколько фоток с телефона тут.
Начало, кофе, рассаживают за ноуты. Опять убунта. И где тут что?.. Разочаровал и VNC-клиент - строки обрезал, что-то еще было. Но разбираться с десктопом, простите, времени нет. А оно потом мешало и нерабочим ^C например - жмешь, а тишина, приходится останавливать виртуалку и заново, из-за банального tcpdump. Во втором-то туре все из дому работали, в комфортных условиях. У кого-то с ^C всё было нормально, но разбираться... очередной косяк организаторов, в общем.
Впрочем, в самом финале это еще была фигня. Была там CentOS, которую я еще более не видел (и еще бы не видел), чем убунту. И что-то совсем жуткое с GRUB и initrd. Что-то из параметров я нагуглил (инетом пользоваться разрешалось), и смог понять, что косяк на самом initramfs. Дальше меня не хватило, и весь час долбился как рыба об стену. Впрочем, не только я - хоть что-то сделать из десятки смогли только 2 человека (см.
трансляцию), причем организаторам пришлось дать дополнительные полчаса, тогда к ним добавился еще один, починивший более половины, и еще двое размочили счет.
Не везло организаторам в этом году - то задания сложные, то еще что... Поскольку для суперфинала нужно было 5 человек, то после обеда и экскурсии по офису Яндекса для выбора еще двух участников устроили жеребьевку и викторину. Попали я и rvs, причем мои ощущения в первые моменты были скорее отрицательные - "опять я на это попал". В общем-то было от чего, потому что - опять! - нужно было чинить виртуалку. Снова grub, снова поднять сеть, и так далее. Далее задания конечно были другие, но всё же, видимо, от них просто. все устали - даже победитель сделал еще только 2 задания, кроме самого базового пинга. Несмотря на то, что нам перед началом дали подсказку - дескать, там где-то в виртуалке заныкан бэкап части того, что нужно.
На этот раз загрузка ядра была сломана не так основательно, и вскоре в систему я попал. Там корень в read-only, и похоже я был в чруте. Или нет? Мозг как-то не хотел выяснять. Я был злой на то, что мне по каждому чиху приходилось перезагружать виртуалку, поскольку не работал банальный ^C (при этом в stty всё было в порядке). Уж не знаю, что там было, VNC-клиент ли виноват, но даже tcpdump посмотреть - и всё, приехали, снова ребут... У других всё было в порядке. Вот так сижу на нервах и пытаюсь понять, что же.
А вскоре после начала наш живой талисман FreeBSD (болельщица то есть) принёс мне бубен (кстати, очень мило было) - это был один из подарков, который Яндекс вручал всем участникам. И вот я, злой, беру этот бубен в руки и начинаю в него бить. Зал заржал. Фраза в
официальном посте Яндекса "Во время финала игроки чинили серверы, и помогали им настоящие админские бубны" была явно про этот момент :) Это несколько расслабило нервы, и я поднял сеть просто наживую, без конфигов. И попал в тройку победителей. Конечно, ковырялся дальше, но уже ничего не починил, как, впрочем, и все остальные, кроме победителя. Думаю, скорее это следует списывать на задания и обстановку (устали уже все).
Далее экскурсия в датацентр Яндекса, награждение и фуршет с пивом, в общем, ничего интересного.
Что можно сказать по итогу - в отличие от прошлого года, по этой олимпиаде уже вполне можно судить о положении дел в отрасли, её результаты показывают уже что-то реальное - всё стало гораздо ближе к практике. На прошлой было три теоретических теста (1 тур, 2 тур, финал), пусть и разных по форме, и лишь одна игра с практикой - суперфинал. В этой - только первый тур с отсевом по теории, но вот все 3 практики были однообразные - "починить упавший сервер за 1 час".
Поскольку победителям прошлых лет запрещено участвовать в следующих олимпиадах, могу свободно высказать предположения, как можно было бы её еще улучшить. Например, в финале можно было бы не чинить сервер, а настраивать что-то с нуля. А в суперфинале - оттюнить медленно работающий сервер (привет, хайлоад). Или, там, разобраться с тем, почему в боевых условиях не работает поделие криворукого программера (это классическое бодание админов и программеров, вошедшее в байки и мемы, бывает даже в самом Яндексе). Одна беда - это требует больше времени, а в программе финального дня еще экскурсия в ДЦ Яндекса, затягивающаяся по московским пробкам... Может быть, стоило бы объединить финал и суперфинал, чтоб уместилось, но, наверное, это будет противоречить правилам, которых хочет придерживаться Яндекс...