company_banner

Включайтесь в игру: the MAZE DevOps game от ITSumma

    Мы уже немного рассказывали о том, как устраиваем квесты для участников ИТ-конференций. Сегодня запускаем онлайн-игру для админов (идея квеста была переработана и дополнена) — the Maze. Под катом — ее история. Включайтесь!

    image

    image

    Как мы придумали игру


    На нашем стенде на Highload и РИТ десятки любопытствующих решали нетривиальные задачи — вроде «админ уволился, сайт упал, срочно нужно все починить». Все началось с того, что мы подумали — админы любят заковыристые проблемы, а не очередные рутинные «создайте мне FTP-аккаунт». В качестве задачи для участников взяли пример из нашей практики — а нам приходилось сталкиваться с массой незаурядных случаев. Всем понравилось, а нам понравился ажиотаж:

    image

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

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


    Что в итоге получилось


    Сейчас игра — это сервер с виртуалками на базе LXC, которые разворачиваются из подготовленных образов с помощью Ansible-плейбуков. Образы готовятся вручную, разной сложности, с разными типами заложенных проблем.

    image

    Пользователь авторизуется через Фейсбук, выбирает уровень сложности задачи, ему выдаётся SSH-доступ в подготовленную среду и ссылка на сайт, где можно видеть результаты своей работы. На задачу отводится 15 до 45 минут (в зависимости от сложности), по истечении отведённого времени виртуалка сбрасывается в исходное состояние, доступы отключаются.

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

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


    Планы на будущее


    Основной план — это, конечно, увеличить количество и разнообразить задачи. У нас накоплен достаточно большой багаж очень разных нестандартных проблем — точно есть, чем с вами поделиться :)

    Также хотелось бы поэкспериментировать с полуавтоматической генерацией шаблонов задач из заранее заготовленных небольших блоков «проблем». Пока есть только теоретические предположения, как это можно было бы реализовать, и не вполне понятно, всё ли получится, но не использовать такую возможность было бы преступлением.

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


    В главных ролях


    Иван Свеженцев — ведущий веб-разработчик, ответственный за текущий релиз. Все будет ломаться, а он будет не спать (не ломайте, пожалуйста!).

    Сергей Спорышев — ведущий веб-разработчик, автор интерфейса игры. Пока, конечно, довольно скромного, но, учитывая дальнейшие планы, работы у него ещё прибавится. Ранее был замечен как главный разработчик «Проекта1917».

    Кирилл Фатин — старший системный администратор из нашей команды поддержки, занимался проектированием и разработкой всего ядра игры, аккумулировал знания по различным каверзным админским проблемам, встреченным нами за всё время работы.


    Поехали!


    Игра тут.

    Пропускная способность сервера с играми — одновременно десять легких, пять средних и три сложных задания. Если вас не пускает — подождите немного, посмотрите на спиннер. Очереди как таковой нет, от кого ajax первый улетел, тому машину и дадут :)

    Очень ждем отзывов и предложений, как по заданиям, так и по самому формату игры. Если сломаете или найдете уязвимость — это тоже очень интересно, обязательно пишите. И делитесь результатами!
    ITSumma
    286,99
    Собираем безумных людей и вместе спасаем интернет
    Поделиться публикацией

    Комментарии 16

      +5
      а если у меня нет facebook'a и я не хочу там регистрироваться?
      Планируете простую авторизацию через почту или другие соцсети/git/googleid?
        0
        да, сделаем
        +4
        А можно login не через facebook?
          0
          сделаем в следующих версиях :)
          +1

          прошел все 3
          на третьем сервере админ по кличке зоркий глаз заметил что на серваке таки установлена центось а не убунта. И почему у нас админы любят это говно мамонта.
          Кстати не запущенный mysql сервер на каждом это так задумано или контейнеро-проблемы?
          Суть игры — отрубить всякую фигню, которую настроил предыдущий админ и настроить сайт на вордпрессе.

            0
            Чем Вас CentOS не устраивает?
              +2

              Бедностью стандартных репозитариев, подходом к обновлениям хуже дебина oldstable, yum.
              Хотя уже исправляются, не спорю, но по прежнему выберу deb-based.
              ЗЫ: Только без холиваров.

              0
              Про MySQL в рамках задания
                0
                Спойлеры же, ну. Я на этом потерял минут 5.
                0
                Как-то сервер (по крайней мере в первой задаче) не совсем похож на реально встречающийся в работе.

                * uname -a говорит, что это убунта.
                * Apt'a нет, зато есть yum
                * Vim или nano по-умолчанию не установлены (окей, установим в ubunt'e через yum (!))
                * При обращении к сайту, который нужно поднять, в логах nginx, php-fpm пусто
                * Хотите полностью уронить сайт? service nginx stop, открываем тестовый сайт, а там всё так же 502.
                * Окей, установим lynx и обратимся к localhost и увидим наконец хоть какой-то результат в логах — «Primary script unknown», с этим уже можно работать, но не нужно. Потому что таких волшебных серверов, в вашей работе, я думаю, не встретится.
                  0
                  uname -a говорит, что это убунта.


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

                  Хотите полностью уронить сайт? service nginx stop, открываем тестовый сайт, а там всё так же 502.


                  тут издержки архитектуры, действительно, фронтом стоит ещё один nginx, распределяющий запросы по игровым виртуалкам. Возможно, стоит использовать какой-нибудь другой инструмент, спасибо:)

                  По остальному не вижу ничего странного, многократно встречали подобное в разных местах:)
                    0
                    502 потому что веб-прокси. Сравните версии nginx отвечают вам и которые вы останавливаете на сервере.
                      0
                      промахнулись немного:)
                    +1
                    cat /etc/*release — узнаём, что centos
                    Если nginx стопнут, а всё равно выдаётся 502, да ещё с server_tokens, в которых написано «ubuntu», то легко догадаться, что хостовый сервер проксирует в контейнер
                      +1

                      Да вполне реальный центосовский сервак, у нас таких на прошлой работе пруд пруди было — одмин центосник, в ней vi только и есть древний по дефолту.


                      А в логах пусто


                      потому что

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

                      0
                      Куда копать в первой задачи? конфиг php-fpm, неверный пользователь, неверные права?

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое