Перейти к основному содержанию
После того как ipmideck установлен, есть два совершенно разных способа его запуска: установка на хост, которую вы запускаете командой ipmideck, и контейнер Docker, который запускает веб-сервер напрямую. Они ведут себя по-разному: команда хоста даёт вам интерактивную консоль оператора, тогда как контейнер просто транслирует обычные журналы. Эта страница охватывает оба случая.

Установка на хост: ipmideck start

При установке на хост (pip) сервер запускается командой ipmideck. Основная команда, start:
ipmideck start
Голый ipmideck без подкоманды работает идентично ipmideck start:
ipmideck
По умолчанию сервер привязывается к 0.0.0.0:3000, поэтому откройте http://<your-ip>:3000 в браузере, как только он запущен.
ipmilink это обратно совместимый псевдоним той же команды, ipmilink start ведёт себя в точности как ipmideck start. Используйте ipmideck для всего нового.
В настоящем терминале (TTY) ipmideck start открывает интерактивную консоль оператора. Когда та же команда запускается без терминала, например перенаправленная в файл или под супервизором процессов, она пропускает консоль и обслуживает с обычными журналами. См. режим headless / non-TTY ниже.

Docker: контейнер запускает сервер напрямую

Контейнер Docker не запускает команду ipmideck. Его образ запускает веб-сервер (uvicorn) напрямую:
docker run --network host ipmideck/ipmideck:latest
Поскольку контейнер никогда не вызывает CLI ipmideck, ни одна из подкоманд, флагов или интерактивная консоль не применяются внутри Docker, контейнер всегда транслирует только обычные журналы в stdout, в точности как режим headless на хосте. Контейнер привязывается к 0.0.0.0:3000, и --network host необходим, чтобы он мог достигать ваших BMC по UDP-порту 623. См. Установку для подробностей о сети.
Настройте контейнер с помощью переменных окружения с префиксом IPMIDECK_ и тома на /data вместо флагов CLI, см. Конфигурацию. Опубликованный образ появится скоро; команда выше это в точности команда, которую вы выполните, как только он станет доступен.

Каталог данных

ipmideck записывает config.yaml, базу данных SQLite и ключ шифрования учётных данных в единый каталог данных. Где он находится, зависит от платформы:
  • Linux / Docker: /data
  • Windows: ./data (относительно каталога, из которого вы запускаете ipmideck)
Расположение можно переопределить на любой платформе с помощью переменной окружения IPMIDECK_DATA_DIR:
$env:IPMIDECK_DATA_DIR = "C:\ipmideck-data"
ipmideck start
В Docker образ уже устанавливает IPMIDECK_DATA_DIR=/data, поэтому сохраните этот путь с помощью тома, чтобы сохранить конфигурацию и историю при перезапусках контейнера.

Переопределения через окружение

Каждая переменная окружения с префиксом IPMIDECK_, которая переопределяет настройку config.yaml, работает одинаково, запускаете ли вы на хосте или в Docker, см. Конфигурацию для полного списка. Две, которые меняют, как ipmideck привязывается:
Переменная окруженияЭффект
IPMIDECK_SERVER_HOSTХост привязки (по умолчанию 0.0.0.0).
IPMIDECK_SERVER_PORTПорт привязки (по умолчанию 3000).
Переменные окружения имеют приоритет над config.yaml. При установке на хост явный флаг привязки в командной строке побеждает как переменную окружения, так и файл.

Порт уже используется

Если что-то уже слушает на порту привязки, ipmideck отказывается запускаться, вместо того чтобы бороться с другим экземпляром за порт. Он печатает это в stderr и завершается со статусом 1:
ERROR: IPMIDeck refused to start — port 3000 is already in use on 0.0.0.0 (another instance may be running).
Обычно это означает, что уже запущена вторая копия ipmideck, или что другая служба заняла порт. Остановите другой процесс или измените порт с помощью IPMIDECK_SERVER_PORT (или server.port в config.yaml) и запустите снова.

Адрес недоступен

Другой тип сбоя, когда хост, который вы запросили для привязки, не может быть использован, например адрес, который не существует на этой машине, интерфейс только IPv6 или привилегированный порт, который вам не разрешено привязывать. ipmideck сообщает об этом отдельно и также завершается со статусом 1:
ERROR: IPMIDeck cannot bind 0.0.0.0:3000 — address unavailable or not permitted.
Проверьте значение IPMIDECK_SERVER_HOST (или server.host), это должен быть адрес, который действительно существует на машине, и убедитесь, что порт это тот, который вам разрешено привязывать.

Корректное завершение работы с Ctrl+C

Нажмите Ctrl+C (что отправляет SIGINT; SIGTERM обрабатывается так же), чтобы остановить ipmideck. Завершение корректное: веб-сервер выходит из своего цикла, выполняется завершение lifespan приложения, управление вентиляторами возвращается вашим BMC, и процесс завершается чисто, без трассировки.
Поскольку завершение возвращает управление вентиляторами BMC, FanPilot перестаёт управлять вашими вентиляторами в момент завершения ipmideck. Собственная политика вентиляторов вашего BMC берёт верх, это предусмотренный отказоустойчивый механизм. См. Возможности, чтобы узнать, как ведёт себя цикл вентиляторов.
В Docker контейнер останавливается на SIGTERM (что отправляет docker stop), поэтому то же корректное завершение выполняется, когда вы останавливаете контейнер.

Перезапуск

Как работает перезапуск, зависит от вашей операционной системы:
  • Linux (и другие POSIX-системы): ipmideck перезапускается на месте: он перезапускает новый процесс, который перечитывает config.yaml, сохраняя тот же управляющий терминал.
  • Windows: нет повторного запуска на месте. ipmideck чисто завершается и печатает подсказку, прося вас снова выполнить команду самостоятельно:
IPMIDeck: restart required to apply the new bind.
  Run  ipmideck start  again to restart.
В Windows просто запустите ipmideck start снова в той же оболочке, новый процесс перечитывает config.yaml и подхватывает новые настройки.

Режим headless / non-TTY

Когда ipmideck запускается без присоединённого терминала, перенаправленный в файл, переадресованный или под менеджером процессов, он обнаруживает отсутствие TTY и пропускает интерактивную консоль. Он обслуживает панель нормально и транслирует обычные журналы в stdout. Это тот же вывод, который вы получаете от контейнера Docker, который всегда работает без консоли. Этот режим не требует ничего особенного: просто запустите ipmideck так, как его вызывает ваш супервизор или конвейер, и читайте журналы из stdout.

Следующие шаги