В этой статье я расскажу про возможности инструмента Cockpit. Cockpit создан с целью облегчения администрирования ОС Linux. Если говорить кратко, то он позволяет выполнять наиболее типичные задачи администратора Linux через приятный веб-интерфейс. Возможности Cockpit: установка и проверка обновление для системы и включение автообновления (процесс патчинга), управление пользователями (создание\удаление\смена паролей\блокировка\выдача прав суперпользователя), управление дисками (создание\редактирование lvm, создание\монтирования файловых систем), настройка сети (team, bonding, ip managing и т. д.), управление systemd-юнитами\таймерами.



Интерес к Cockpit обусловлен выходом Centos 8, где Cockpit уже встроен в систему и требуется его лишь активировать командой «systemctl enable --now cockpit.service». На других дистрибутивах потребуется ручная установка из пакетного репозитория. Рассматривать тут установку мы не будем, смотрите официальное руководство.

После установки нам необходимо в браузере перейти на 9090 порт сервера, на котором установлен Cockpit (т. е. ip-сервера:9090). Например, 192.168.1.56:9090

Вводим обычный логин\пароль от локального аккаунта и ставим галочку «Reuse my password for privileged tasks», чтобы была возможность запускать некоторые команды от имени привилегированного пользователя (root). Естественно, ваш аккаунт должен обладать возможностью выполнять команды через sudo.

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



Интерфейс выглядит очень понятным и логичным, слева вы увидите навигационную панель:



Стартовый раздел называется «system», где вы можете увидеть информацию по утилизации ресурсов сервера (CPU, RAM, Network, Disks):



Чтобы посмотреть более подробную информацию, например, по дискам, просто нажмите на соответствующую надпись и вы попадёте сразу в другой раздел (storage):



Тут же можете создать lvm:



Выберите имя для vg-группы и диски, которые хотите использовать:



Задайте имя для lv и выберите размер:



И, наконец, создайте файловую систему:



Обратите внимание, что Cockpit сам пропишет нужную строку в fstab и смонтируем устройство. Также можно прописывать специфичные опции монтирования:



Вот это выглядит в системе:



Тут же можно расширять\сжимать файловые системы, добавлять новые устройства в vg-группу и т.д.

В разделе «Networking» можно не просто менять типичные сетевые настройки (ip, dns, маску, шлюз), но и создавать более сложные конфигурации, такие как bonding или teaming:



Вот так готовая конфигурация выглядит в системе:


Согласитесь, что настраивать через vi\nano было бы чуть дольше и сложнее. Особенно для новичков.

В «services» можно управлять systemd юнитами и таймерами: останавливать их, перезапускать, убирать из автозагрузки. Так же очень быстро создать свой таймер:





Единственное, что сделано плохо: не понятно, с какой периодичностью запускается таймер. Можно лишь посмотреть, когда он запускался в последний раз и когда запустится вновь.

В «Software updates», как не сложно догадаться, можно посмотреть все доступные обновления и установить их:



Система оповестит нас, если потребуется перезагрузка:



Тут же можно включить автоматическое обновление системы и кастомизировать время установки обновлений:



Так же в Cockpit можно управлять SeLinux, создавать sosreport (полезно при общении с вендорами при решении технических проблем):





Управление пользователями реализовано максимально просто и понятно:





Кстати, можно добавлять ssh-ключи.

И, наконец, можно читать системные логи и сортировать по важности:



Мы прошлись по всем основным разделам программы.

Вот такой краткий обзор возможностей. Использовать Cockpit или нет решать только вам. На мой взгляд, Cockpit может решить несколько проблем и удешевить обслуживание серверов.

Основные преимущества:

  • Порог вхождение в администрирование ОС Linux существенно снижается благодаря таким инструментам. Выполнять стандартные и базовые действия может практически любой человек. Администрирование можно частично делегировать разработчикам или аналитикам для удешевления производства и ускорения работы. Ведь теперь не надо набирать в консоли pvcreate, vgcreate, lvcreate, mkfs.xfs, создать точку монтирования, редактировать fstab и, наконец, набрать mount -a, достаточно кликнуть мышью пару раз
  • Можно разгрузить администраторов Linux и избавить их от рутины, чтобы они фокусировались на более сложных задачах
  • Можно уменьшить количество человеческих ошибок. Согласитесь, что через веб-интерфейс сделать ошибку сложнее, чем через консоль

Недостатки, обнаруженные мною:

  • Ограниченность утилиты. Можно делать лишь базовые операции. Нельзя, например, сразу расширить lvm после увеличения диска со стороны виртуализации, необходимо в консоли набрать pvresize и лишь потом продолжить работу через веб-интерфейс. Нельзя добавить пользователя в определённую группу, нельзя поменять права у директорий, проанализировать используемое место. Хотелось бы более обширный функционал
  • Раздел «Applications» не работал корректно
  • Нельзя поменять цвет консоли. Я, например, могу комфортно работать лишь на светлом фоне с тёмным шрифтом:


Как мы видим, у утилиты очень хороший потенциал. Если расширить функционал, то выполнение многих задач может стать ещё быстрее и проще.

upd: также имеется возможность управлять множеством серверов с одного веб-интерфейса путём добавления нужных серверов в «Machines dashboard». Функционал, например, может быть полезен при массовом обновлении сразу нескольких серверов. Подробнее читайте в официальной документации.

Комментарии (21)


  1. FeNUMe
    13.10.2019 16:52
    +3

    Какие преимущества в сравнении с Webmin/Ajenti/Vesta?


    1. mammuthus
      13.10.2019 18:08

      Нативность?


      1. FeNUMe
        13.10.2019 18:24

        Что вы под этим подразумеваете, то что кокпит впилен по умолчанию в центОС8? Так я бы не назвал это плюсом, скорее даже наоборот — зачем совать в систему то что нужно единицам и что они прекрасно могут поставить парой команд из репозиториев?


        1. mammuthus
          13.10.2019 18:48

          Я не смог найти других аргументов, учитывая низкую функциональность кокпита


          1. katzen
            12.10.2019 23:20

            Ну вот нативность тоже не аргумент.


    1. gecube
      12.10.2019 23:51
      +1

      Целевая аудитория разная. Vesta — это в первую очередь вэб-панель. Для организации своего «виртуального хостинга». Вещь неплохая по сравнению с ISPmanager, бесплатная, но глючноватая. Ещё ужос-ужос, что Веста на баше написана. Целиком

      Ajenti — мне визуально понравилась, она больше нацелена именно на управление сервером, плюс к тому — написана на Питоне. Но функционал очень ограничен. И тоже глючновата. Поэтому мимо

      Кокпит же — очевидно, для сотрудника внутреннего техпода, у которого есть рутинные задачи с массивом серверов. И чтоб долго не обучать его — даёшь ему GUI. Но это выглядит тупиковым путем и кажется, что лучше ему дать Rundeck с заранее определенными сценариями или AWX/Ansible Tower


  1. Inlore
    13.10.2019 17:29
    +1

    Но… зачем? В 2019 балом правит IaC (Infrastructure as code)


    1. gecube
      13.10.2019 19:13

      Это для тех, кто не осилил IaC.

      + всегда есть необходимость ставить эксперименты. И через IaC их делать… кхм… долго и дорого. Проще накликать в веб-гуе что-то, а если он еще и позволяет потом экспортнуть изменения, то потом их внедрить в IaC-среду не должно быть сложно. Но это влажные мечты. Опыт показывает, что с амазоном и прочим все эти экспортеры работают некорректно, а в случае CockPit — функциональность тулзы слишком ограничена.


  1. dominigato
    13.10.2019 20:58
    +1

    Есть еще куча плагинов к нему. Управление виртуалками на libvirt, управление контейнерами, например Есть API и можно писать свои плагины.


  1. pprometey
    13.10.2019 08:12

    Год назад внедрял на нескольких серверах с centos, проблема была — отваливался сервис, приходилось вручную перезапускать. Отказался потом.


  1. MSigillite
    13.10.2019 11:01
    +1

    На мой взгляд ниша Cockpit это сервера совсем небольших компаний с админами-фрилансерами, где разворачивать более продвинутые средства (те же Cacti/Zabbix для мониторинга нагрузки) просто нет смысла. Ну или же в тестовых окружениях.

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

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


    1. vodopad Автор
      13.10.2019 11:16

      Добавил пару строк в конец статьи, спасибо!


  1. karavan_750
    13.10.2019 14:04

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


  1. atbuhw
    13.10.2019 14:46

    Мне кажется, слишком много слоёв между пользователем (силящим в своём пользователськом аккаунте!) и root-доступом, слишко много потенциальных мест для атаки. Например, зловред с пользовательскими правами может начать слать события клавиатуры и мыши в браузер с помощью xdtool.


  1. inqfen
    13.10.2019 16:26

    Как по мне — такие гуи вещь достаточно бесполезная. Если серверов один/несколько — изменения быстрее через шелл сделать, если серверов много — то нужен какой-то SCM и IaC, через месяц иначе забудешь что ты там мышкой натыкал и получатся серверы — снежинки. Ну и плюс добавляется прослойка где могут быть баги и уязвимости


    1. gecube
      13.10.2019 16:55

      Welcome to habr!
      Поддержу полностью.

      > Если серверов один/несколько — изменения быстрее через шелл сделать

      скорее оркестрация. Через какой-нибудь salt, ansible, puppet etc.

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

      +1


  1. Fluke87
    14.10.2019 08:23

    Данный инструмент расчитан на рутиную работу. Например: раз в неделю вам нужно выполнить действия на сервере. Для этого консоль не нужна да и не удобна


    1. inqfen
      14.10.2019 13:14

      Да, для этого нужен cron


      1. dbax
        15.10.2019 18:03

        Присоединяюсь. Какие действия нужно выполнять руками раз в неделю?
        «лвмы» ресайзить и «ники» бондить?


  1. gunrunner
    14.10.2019 13:39

    Правильно ли я понимаю что Кокпит — инструмент подходящий для одного-двух серверов класса SOHO с начинающим админом?


    1. dominigato
      14.10.2019 14:04

      Можете туда добавлять сколько угодно серверов. Но это будет скорее тулза для мониторинга, там неплохой дашборд. Если что-то идет не так на каком-то сервере, можно не вылезая из кокпита проверить и пофиксить.
      Хотя я так и не понял его предназначение, если честно, слишком уже все в IaaC.