Skip to main content
Gdy ipmideck jest już zainstalowany, istnieją dwa bardzo różne sposoby jego działania: instalacja na hoście, którą uruchamiasz poleceniem ipmideck, oraz kontener Docker, który uruchamia serwer WWW bezpośrednio. Zachowują się różnie, polecenie hosta daje interaktywną konsolę operatora, podczas gdy kontener jedynie przesyła zwykłe dzienniki. Ta strona obejmuje oba przypadki.

Instalacja na hoście: ipmideck start

W instalacji na hoście (pip) serwer uruchamia się poleceniem ipmideck. Głównym poleceniem jest start:
Samo ipmideck bez podpolecenia działa identycznie jak ipmideck start:
Domyślnie serwer wiąże się z 0.0.0.0:3000, więc otwórz http://<your-ip>:3000 w przeglądarce, gdy już działa. W prawdziwym terminalu (TTY) ipmideck start otwiera interaktywną konsolę operatora. Gdy to samo polecenie działa bez terminala, na przykład przekierowane do pliku lub pod nadzorcą procesów, pomija konsolę i serwuje zamiast tego zwykłe dzienniki. Zobacz tryb headless / non-TTY poniżej.

Docker: kontener uruchamia serwer bezpośrednio

Kontener Docker nie uruchamia polecenia ipmideck. Jego obraz uruchamia serwer WWW (uvicorn) bezpośrednio:
Ponieważ kontener nigdy nie wywołuje CLI ipmideck, żadne z podpoleceń, flag ani interaktywna konsola nie mają zastosowania wewnątrz Dockera, kontener kiedykolwiek przesyła tylko zwykłe dzienniki do stdout, dokładnie jak tryb headless na hoście. Kontener wiąże się z 0.0.0.0:3000, a --network host jest wymagane, aby mógł docierać do twoich BMC przez port UDP 623. Zobacz Instalacja po szczegóły dotyczące sieci.
Skonfiguruj kontener za pomocą zmiennych środowiskowych z prefiksem IPMIDECK_ oraz wolumenu na /data zamiast flag CLI, zobacz Konfiguracja.

Katalog danych

ipmideck zapisuje config.yaml, bazę danych SQLite oraz klucz szyfrujący poświadczenia do jednego katalogu danych. Gdzie się on znajduje, zależy od platformy:
  • Linux / Docker: /data
  • Windows: ./data (względem katalogu, z którego uruchamiasz ipmideck)
Na Linuksie /data nie jest zapisywalny dla zwykłego użytkownika, więc instalacja pip uruchomiona jako użytkownik nie-root kończy się przy starcie błędem PermissionError: [Errno 13] Permission denied: '/data'. Ustaw IPMIDECK_DATA_DIR na katalog, którego jesteś właścicielem (patrz poniżej), lub uruchom ipmideck jako usługę.
Lokalizację możesz nadpisać na dowolnej platformie zmienną środowiskową IPMIDECK_DATA_DIR:
W Dockerze obraz już ustawia IPMIDECK_DATA_DIR=/data, więc utrwal tę ścieżkę za pomocą wolumenu, aby zachować konfigurację i historię między restartami kontenera.

Nadpisania środowiskowe

Każda zmienna środowiskowa z prefiksem IPMIDECK_, która nadpisuje ustawienie config.yaml, działa tak samo, czy uruchamiasz na hoście, czy w Dockerze, zobacz Konfiguracja po pełną listę. Dwie, które zmieniają to, jak ipmideck się wiąże, to:
Zmienne środowiskowe mają pierwszeństwo przed config.yaml. W instalacji na hoście jawna flaga wiązania w wierszu poleceń wygrywa zarówno ze zmienną środowiskową, jak i z plikiem.

Port już w użyciu

Jeśli coś już nasłuchuje na porcie wiązania, ipmideck odmawia uruchomienia, zamiast walczyć z inną instancją o port. Wypisuje to do stderr i kończy działanie ze statusem 1:
Zwykle oznacza to, że już działa druga kopia ipmideck, albo że inna usługa zajęła port. Zatrzymaj inny proces lub zmień port za pomocą IPMIDECK_SERVER_PORT (lub server.port w config.yaml) i uruchom ponownie.

Adres niedostępny

Inny rodzaj awarii to gdy host, o którego wiązanie poprosiłeś, nie może być użyty, na przykład adres, który nie istnieje na tej maszynie, interfejs tylko IPv6 lub uprzywilejowany port, do którego wiązania nie masz uprawnień. ipmideck zgłasza to osobno i również kończy działanie ze statusem 1:
Sprawdź wartość IPMIDECK_SERVER_HOST (lub server.host), musi to być adres, który faktycznie istnieje na maszynie, i upewnij się, że port jest jednym z tych, do których masz uprawnienia.

Łagodne wyłączanie za pomocą Ctrl+C

Naciśnij Ctrl+C (co wysyła SIGINT; SIGTERM jest obsługiwany tak samo), aby zatrzymać ipmideck. Wyłączanie jest łagodne: serwer WWW kończy swoją pętlę, uruchamia się zamknięcie lifespan aplikacji, sterowanie wentylatorami wraca do twoich BMC, a proces kończy się czysto bez śladu wyjątku.
Ponieważ wyłączanie przywraca sterowanie wentylatorami do BMC, FanPilot przestaje sterować wentylatorami w momencie, gdy ipmideck się kończy. Własna polityka wentylatorów twojego BMC przejmuje kontrolę, to zamierzony mechanizm bezpieczeństwa. Zobacz Funkcje, aby dowiedzieć się, jak zachowuje się pętla wentylatorów.
W Dockerze kontener zatrzymuje się na SIGTERM (który wysyła docker stop), więc to samo łagodne wyłączanie uruchamia się, gdy zatrzymujesz kontener.

Restartowanie

To, jak działa restart, zależy od twojego systemu operacyjnego:
  • Linux (i inne systemy POSIX): ipmideck restartuje się w miejscu: uruchamia świeży proces, który ponownie odczytuje config.yaml, zachowując ten sam terminal sterujący.
  • Windows: brak ponownego wykonania w miejscu. ipmideck wyłącza się czysto i wypisuje podpowiedź, prosząc, abyś sam ponownie uruchomił polecenie:
W Windowsie po prostu ponownie uruchom ipmideck start w tej samej powłoce, świeży proces ponownie odczyta config.yaml i przejmie nowe ustawienia.

Tryb headless / non-TTY

Gdy ipmideck działa bez podłączonego terminala, przekierowany do pliku, przekierowany lub pod menedżerem procesów, wykrywa brak TTY i pomija interaktywną konsolę. Serwuje pulpit normalnie i przesyła zamiast tego zwykłe dzienniki do stdout. To to samo wyjście, które otrzymujesz z kontenera Docker, który zawsze działa bez konsoli. Ten tryb nie wymaga niczego specjalnego: po prostu uruchom ipmideck tak, jak wywołuje go twój nadzorca lub potok, i odczytuj dzienniki ze stdout.

Następne kroki