Статьи

Как установить Cockpit в Ubuntu 18.04

Эта статья была первоначально опубликована на Alibaba Cloud . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.

Cockpit — это менеджер серверов, который упрощает администрирование ваших серверов GNU / Linux через веб-браузер. Это делает Linux доступным для обнаружения, позволяя системным администраторам легко выполнять такие задачи, как запуск контейнеров, администрирование хранилища, настройка сети, проверка журналов и так далее.

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

Cockpit выпущен под LGPL v2.1 + и доступен для Redhat, CentOS, Debian, Ubuntu, Atomic и Arch Linux. Кабина совместима и хорошо работает с серверами Alibaba Cloud Elastic Compute Service (ECS) . В этом руководстве я буду устанавливать Cockpit на ECS с установленной на нем Ubuntu 18.04 LTS. До момента do-release-upgrade Ubuntu 18.04 и его включения в библиотеку образов операционной системы Alibaba Cloud мы можем обновить Ubuntu 16.04 до Ubuntu 18.04 с помощью утилиты do-release-upgrade .

Предпосылки

  1. Вы должны активировать Alibaba Cloud Elastic Compute Service (ECS) и подтвердить свой действительный способ оплаты. Если вы новый пользователь, вы можете получить бесплатную учетную запись в своей учетной записи Alibaba Cloud. Если вы не знаете, как настроить свой экземпляр ECS, вы можете обратиться к этому руководству или краткому руководству .
  2. Вы должны установить имя хоста вашего сервера.
  3. Доступ к консоли VNC в вашем клиенте Alibaba Cloud или SSH, установленном на вашем ПК.

После выполнения предварительных условий войдите в систему как пользователь root с именем пользователя и паролем root через SSH-клиент (например, Putty) или консоль VNC, доступную на панели мониторинга учетной записи Alibaba Cloud.

Установите Cockpit на Ubuntu 18.04

Кокпит включен в Ubuntu 18.04, так что вы можете просто использовать команду apt для его установки.

sudo apt update

Установите пакет Cockpit.

sudo apt -y install cockpit

Запустите и включите кокпит.

 sudo systemctl start cockpit.socket sudo systemctl enable cockpit.socket 

Работа с кабиной

После запуска службы Cockpit она начнет прослушивать порт 9090. Теперь откройте браузер и перейдите по указанному ниже URL-адресу.

https://ip-address:9090

Кабина использует самозаверяющий сертификат SSL для безопасного общения. Таким образом, вам нужно добавить исключение в вашем браузере для доступа к кабине.

Войдите под своей локальной учетной записью. В моем случае это gqadir.

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

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

Давайте посмотрим на это. Раздел главной страницы показывает нам некоторую информацию о машине, на которой мы работаем, такую ​​как оборудование , имя хоста , операционная система и системное время . В этом случае я запускаю Ubuntu на виртуальной машине, поэтому значение раздела аппаратного обеспечения — QEMU Standard Pc .

У нас также есть выпадающее меню, которое позволяет нам включить питание системы при перезагрузке или выключении. Справа мы видим несколько графиков, которые позволяют нам отслеживать важнейшие действия системы по порядку: загрузка процессора и памяти, активность диска и сетевой трафик.

Раздел журналов

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

Чтобы получить доступ к подробной информации о сообщении журнала, все, что нам нужно сделать, это нажать на соответствующую строку: мы будем перенаправлены на страницу, содержащую данные журнала.

Секция хранения

Продолжая, у нас есть сессия хранения . Здесь у нас есть несколько графиков, на которых показаны операции чтения и записи дисков, и сразу после строки состояния, показывающей объем использования файловых систем. У нас также есть возможность легко добавить NFS Mounts и Raid Devices .

Мы можем проверить конкретный диск, щелкнув соответствующий раздел справа в поле « Диски» : мы также сможем создать новую таблицу разделов (если соблюдаются некоторые условия — например, диск не должен быть подключен) на указанный диск: операция сотрет все данные на нем.

Сетевой раздел

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

Разделы счетов и услуг

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

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

Давайте теперь посмотрим, как мы можем настроить Cockpit для наших приложений.

1. Файл конфигурации кабины — cockpit.conf

Кабина может быть настроена через /etc/cockpit/cockpit.conf . Этот файл имеет синтаксис INI-файла и, таким образом, содержит пары ключ / значение, сгруппированные в тематические группы. Смотрите примеры ниже для деталей.

Примечание: порт, который прослушивает кокпит, не может быть изменен в этом файле. Чтобы изменить порт, измените файл systemd cockpit.socket.

Веб-сервис

происхождения

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

  [WebService] Origins = https://somedomain1.com https://somedomain2.com:9090 

ProtocolHeader

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

  [WebService] ProtocolHeader = X-Forwarded-Proto 

LoginTitle

Установите заголовок браузера для экрана входа в систему.

Войти в

При значении true параметр «Подключиться к» на экране входа в систему отображается и позволяет войти на другой сервер. Если эта опция не указана, она будет автоматически определена в зависимости от того, доступен процесс cockpit-ssh или нет.

RequireHost

Если задано значение true, кабина потребует от пользователей использования опции Connect to, чтобы указать хост для входа в систему.

MaxStartups

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

В качестве альтернативы можно включить случайное раннее удаление, указав три значения, разделенных двоеточиями : start: rate: full (например, «10:30:60»). Из кабины начнут отказываться от попыток аутентификации с вероятностью / 100 (30%), если в настоящее время запущены (10) неаутентифицированные соединения. Вероятность возрастает линейно, и все попытки соединения отклоняются, если число неаутентифицированных соединений достигает полного (60).

AllowUnencrypted

Если это правда, кабина будет принимать незашифрованные соединения HTTP. В противном случае он перенаправляет все HTTP-соединения на HTTPS. Исключением являются соединения от localhost и для определенных URL (например, / ping ). По умолчанию false.

UrlRoot

Корневой URL, где вы будете обслуживать кабину. Когда предоставленная кабина будет ожидать, что все запросы будут иметь префикс с указанным URL. Это в основном полезно, когда вы используете кокпит за обратным прокси, например, nginx. / кокпит / и / кокпит + зарезервированы и не должны использоваться. Например / кокпит-новый / в порядке. / кокпит / и / кокпит + новый / нет.

Журнал

фатальный

Вид сообщений журнала в мосту следует считать фатальным. Разделите несколько значений пробелами. Соответствующие значения: критические и предупреждения.

OAuth

Кабина может быть настроена для поддержки потока авторизации OAuth с неявным предоставлением. В случае успеха полученный oauth-токен будет передан в cockpit-ws с использованием аутентификационной схемы Bearer . Для успешного входа в систему необходимо также настроить кабину, чтобы проверить и разрешить токены на предъявителя .

URL

Это URL, на который кабина перенаправит браузер пользователя, когда ему потребуется получить токен oauth. Кокпит добавит параметр redirect_uri в URL с указанием места, куда поставщик oauth должен перенаправить после получения токена.

ErrorParam

Когда провайдер oauth перенаправляет пользователя обратно в кабину, найдите этот параметр в строке запроса или фрагменте URL-адреса, чтобы найти сообщение об ошибке. Если не указано, по умолчанию будет error_description .

TokenParam

Когда провайдер oauth перенаправляет пользователя обратно в кабину, найдите этот параметр в строке запроса или фрагменте URL-адреса, чтобы найти маркер доступа. Если не указано иное, по умолчанию используется access_token .

2. Веб-сервис кабины — WAP-кабина

Программа cockpit-ws — это компонент веб-службы, используемый для связи между браузерным приложением и различными инструментами и службами конфигурации, такими как cockpit-bridge (8).

Пользователям или администраторам никогда не нужно запускать эту программу, поскольку она автоматически запускается systemd (1) при загрузке.

cockpit-ws [--help] [--port PORT] [--no-tls] [--local-ssh] [--address ADDRESS]

Транспортная безопасность

Чтобы указать сертификат TLS, который должен использовать веб-сервис, просто перетащите файл с расширением .cert в каталог /etc/cockpit/ws-certs.d . Если в этом каталоге несколько файлов, то после сортировки выбирается файл с самым высоким приоритетом.

Файл .cert должен содержать как минимум два блока PEM в стиле OpenSSL. Первые один или несколько блоков BEGIN CERTIFICATE для сертификата сервера и промежуточных центров сертификации и последний, содержащий BEGIN PRIVATE KEY или аналогичный. Ключ не может быть зашифрован.

Если сертификата TLS нет, самозаверяющий сертификат автоматически создается с использованием openssl и сохраняется в файле 0-self-signature.cert .

При регистрации в домене FreeIPA SSL-сертификат запрашивается с IPA-сервера и сохраняется в 10-ipa.cert .

Чтобы проверить, какой сертификат cockpit-ws будет использовать, выполните следующую команду.

$ sudo remotectl certificate

Если для управления сертификатами используется certmonger , можно использовать следующую команду для автоматической подготовки сцепленного файла .cert :

 CERT_FILE=/etc/pki/tls/certs/$(hostname).pem KEY_FILE=/etc/pki/tls/private/$(hostname).key getcert request -f ${CERT_FILE} -k ${KEY_FILE} -D $(hostname --fqdn) – C "sed -nw/etc/cockpit/ws-certs.d/50-from-certmonger.cert ${CERT_FILE} ${KEY_FILE}" и CERT_FILE=/etc/pki/tls/certs/$(hostname).pem KEY_FILE=/etc/pki/tls/private/$(hostname).key getcert request -f ${CERT_FILE} -k ${KEY_FILE} -D $(hostname --fqdn) – C "sed -nw/etc/cockpit/ws-certs.d/50-from-certmonger.cert ${CERT_FILE} ${KEY_FILE}" и CERT_FILE=/etc/pki/tls/certs/$(hostname).pem KEY_FILE=/etc/pki/tls/private/$(hostname).key getcert request -f ${CERT_FILE} -k ${KEY_FILE} -D $(hostname --fqdn) – C "sed -nw/etc/cockpit/ws-certs.d/50-from-certmonger.cert ${CERT_FILE} ${KEY_FILE}" 

Тайм-аут

При запуске через systemd (1) cockpit-ws выйдет через 90 секунд, если никто не вошел в систему, или после отключения последнего пользователя.

Параметры

команда Описание
-Помогите Показать параметры справки.
-local-SSH Обычно cockpit-ws использует cockpit-session и PAM для аутентификации пользователя и запуска пользовательского сеанса. Если эта опция включена, она будет аутентифицироваться через SSH на 127.0.0.1 порт 22.
–Порт ПОРТ Служите HTTP-запросам PORT вместо порта 9090. Обычно Cockpit запускается по требованию путем активации сокета systemd, и эта опция не действует. Обновите файл cockpit.socket директивы ListenStream обычным системным способом.
–Адрес Привязка к адресу ADDRESS вместо привязки ко всем доступным адресам. Обычно Cockpit запускается по требованию активацией сокета systemd, и эта опция не действует. В этом случае обновите директиву ListenStream в файле cockpit.socket обычным системным способом.
-no-TLS Не используйте TLS.

Окружающая обстановка

Процесс cockpit-ws будет использовать переменную среды XDG_CONFIG_DIRS из спецификации XDG basedir, чтобы найти свой файл конфигурации cockpit.conf (5).

Кроме того, переменная среды XDG_DATA_DIRS из спецификации на основе XDG может использоваться для переопределения расположения, из которого будут обслуживаться статические файлы. Это файлы, которые обслуживаются незарегистрированным пользователем.

3. Настройка удаленного доступа — remotectl

Программа remotectl настроит удаленный доступ к системе. В настоящее время он управляет SSL-сертификатом кабины.

remotectl {COMMAND} [OPTIONS...]

команды

сертификат

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

–Ensure Убедитесь, что сертификат существует и может быть загружен. Сертификат будет создан, если он еще не существует.

–User username Пользователь Unix, которому должен принадлежать сертификат. Вступает в силу только при использовании с -ensure .

–Group groupname Группа unix, которая должна прочитать сертификат. Вступает в силу только при использовании с -ensure .

Если даны какие-либо дополнительные аргументы, они рассматриваются как файлы, которые должны быть объединены для создания файла сертификата. Если объединенные файлы будут проверены, они будут сохранены в соответствующем месте, используя имя первого файла с расширением, измененным на .cert. Например:

remotectl certificate server.pem chain.pem key.pem

приведет к server.cert . Если server.cert уже существует, он будет перезаписан.

Параметры

команда Описание
-Помогите Показать параметры справки.
-подробный Напечатайте подробные сообщения о задаче.

4. Хост в кокпите — мост в кокпите

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

Эта программа обычно не запускается пользователями или администраторами. Он находится в $ PATH, так что кокпит может найти его при соединении между хостами. Однако есть некоторые средства диагностики, доступные при запуске из командной строки.

cockpit-bridge [--help] [--packages]

Параметры

команда Описание
-Помогите Показать параметры справки.
-interact = граница Взаимодействовать с протоколом raw cockpit1. Полезно для отладки и тестирования. Укажите границу, которая должна находиться на пустой строке между сообщениями.
-packages Перечислите все доступные пакеты кабины и выйдите. Обратите внимание, что это включает пакеты, доступные пользователю, выполняющему эту команду.

Вывод

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