Polecenia Appliance
Polecenia ironflock appliance instalują IronFlock Appliance na serwerze z Linuksem, który sam utrzymujesz, i od tej chwili dbają o niego. Za ich pomocą instalujesz Appliance, zmieniasz jego ustawienia, aktualizujesz go, uruchamiasz, zatrzymujesz i restartujesz, czytasz jego logi, resetujesz hasło administratora, tworzysz kopię zapasową sekretów, przywracasz je i poddajesz rotacji oraz ponownie go usuwasz.
Appliance to kompletny system IronFlock na jednej lokalnej maszynie. Czym jest, jego tryby HTTPS, jego sieć i eksploatację opisuje sekcja IronFlock Appliance. Wymagania wobec maszyny (CPU, pamięć, pamięć masowa, synchronizacja czasu) podaje jego strona Instalacja.
Uwaga: Te polecenia są nowe w wydaniu 2.1.0
ironflock. Przeszły jeden przebieg testowy, odappliance installdoappliance remove --purge, na świeżej maszynie wirtualnej z Ubuntu 24.04 (amd64). Nie sprawdzono jeszcze aktualizacji, która się nie powiedzie, i jej wycofania do poprzedniego wydania.
Appliance
| Polecenie | Co robi |
|---|---|
appliance install | instaluje Appliance na tej maszynie i go uruchamia albo doprowadza zainstalowany Appliance do wydania |
appliance configure | zmienia ustawienia: licencję, tryb TLS, proxy, nazwy hosta, tunel, zasadę drugiego składnika |
appliance update | aktualizuje Appliance do wydania i wraca do poprzedniego wydania, gdy aktualizacja się nie powiedzie |
appliance start | uruchamia Appliance |
appliance stop | zatrzymuje Appliance do czasu ponownego uruchomienia |
appliance restart | restartuje Appliance |
appliance logs | pokazuje logi usług Appliance |
appliance reset-admin-password | nadaje użytkownikowi interfejsu admin nowe hasło |
appliance backup | zapisuje sekrety Appliance w archiwum tar.gz |
appliance restore | przywraca kopię zapasową sekretów |
appliance rotate | nadaje jednemu sekretowi Appliance nową wartość |
appliance revoke-direct-access | usuwa klucze dostępu bezpośredniego utworzone z poprzednim FILE_CRED_KEY |
appliance remove | usuwa Appliance z tej maszyny |
Polecenia Appliance działają w Linuksie. appliance install wymaga systemu opartego na Debianie lub Ubuntu, z systemd. W macOS polecenia kończą się kodem wyjścia 3, zanim cokolwiek sprawdzą; uruchamiaj je na maszynie Appliance albo z Maca z --host.
Uruchamiaj je jako root, przez sudo. Polecenie, które zmienia system, bez roota kończy się kodem wyjścia 3 i samo nie wywołuje sudo (Uprawnienia roota).
Każde polecenie przyjmuje też flagi globalne --yes, --json, --download-base, --host, --hosts i --parallel (Flagi globalne). Pytanie wymaga terminala; bez niego podaj --yes (Pytania i potwierdzenie).
ironflock status pokazuje zainstalowany Appliance: jego wersję i kanał, adres jego interfejsu, to, czy ma licencję, jego usługę, stan zdrowia jego usług i oczekującą aktualizację (ironflock status).
Jak wygląda zainstalowany Appliance
| Ścieżka lub jednostka | Co to jest |
|---|---|
/opt/ironflock | katalog instalacji (--install-dir wskazuje inny). Należy do roota |
/opt/ironflock/.env | konfiguracja i wszystkie sekrety Appliance |
/opt/ironflock/license.env | klucz licencyjny |
/opt/ironflock/install.json | wpis wyborów instalacji, wyłącznie dla roota (poniżej) |
/opt/ironflock/.update-previous | kopia poprzedniego wydania, którą aktualizacja zachowuje w trakcie działania (poniżej) |
/opt/ironflock/triggers/apply-update.status, apply-update.log | postęp i wyjście ostatniej aktualizacji, które odczytuje interfejs |
ironflock.service | usługa systemd, która uruchamia kontenery Appliance przez Docker Compose. Startuje przy każdym rozruchu |
/usr/local/bin/ironflock | ironflock, który jednostki Appliance uruchamiają przy każdym starcie, także przy rozruchu |
/etc/ironflock/appliance.json | wpis zmian wprowadzonych przez instalację na hoście, które cofa appliance remove |
Oprócz ironflock.service instalacja konfiguruje watchdog, który co pięć minut sprawdza router i backend i restartuje ironflock.service, gdy nie działają prawidłowo, najwyżej raz na pięć minut, oraz timer, który co godzinę ponawia nieudaną aktualizację z interfejsu.
Nie przenoś /usr/local/bin/ironflock: jednostki Appliance uruchamiają go przy każdym starcie. appliance install odmawia działania z innego miejsca i mówi, jak go tam zainstalować. ironflock status uruchomione jako root ostrzega, gdy tego pliku binarnego brakuje albo jest starszy niż ten, który ostatnio zainstalował lub zaktualizował Appliance. sudo ironflock self-update zastępuje go najnowszym wydaniem (ironflock self-update).
Appliance uruchamia też własnego agenta urządzenia hosta, którego appliance install instaluje, chyba że podasz --no-agent. O tego agenta dbają polecenia agent.
Jedna zmiana naraz
Naraz działa jedna instalacja, aktualizacja lub inna zmiana Appliance. Druga czeka na pierwszą i o tym informuje:
Another IronFlock install, update or other change of the appliance is running on this host (process <pid>); waiting up to <time> for it to finishinstall, update, configure, rotate, revoke-direct-access, reset-admin-password i restore czekają do godziny. start, stop, restart i remove czekają do 30 sekund. Gdy tamto uruchomienie nadal trwa, polecenie niczego nie zmienia i kończy się kodem wyjścia 3.
ironflock appliance install
Instaluje IronFlock Appliance w /opt/ironflock i go uruchamia. Czeka, aż każda usługa będzie sprawna, a chmura IronFlock dotrze do Appliance, po czym pokazuje dane logowania administratora interfejsu webowego, jeden raz, w terminalu.
ironflock appliance install --license-file <file> [flags]Działa w: Linuksie opartym na Debianie lub Ubuntu, z systemd. Root: wymagany.
Instalacja konfiguruje:
- wydanie z kanału albo to, które podaje
--version, sprawdzone kluczem wydań Appliance; - konfigurację i sekrety Appliance;
- własnego agenta urządzenia hosta oraz Dockera, gdy go brakuje;
- ustawienia hosta;
- logowanie Dockera do rejestru kluczem licencyjnym;
- obrazy wydania;
ironflock.service.
Gdy brakuje Dockera, instalacja uruchamia jako root skrypt instalacyjny Dockera z get.docker.com. To pobieranie jest chronione wyłącznie przez TLS.
| Flaga | Znaczenie |
|---|---|
--license-file <file> | plik z kluczem licencyjnym albo z LICENSE_KEY=<key>; - czyta standardowe wejście |
--license <key> | sam klucz licencyjny. Jest widoczny w ps: lepiej użyj --license-file |
--version <x.y.z> | wersja Appliance do zainstalowania. Domyślnie najnowsza z kanału |
--channel <channel> | kanał wydań: production, test lub all. Domyślnie kanał zainstalowanego Appliance, a w przeciwnym razie production |
--tls | udostępniaj interfejs webowy przez HTTPS z certyfikatem własnego CA Appliance. Urządzenia nadal łączą się bez szyfrowania. Pozostaje włączone przy kolejnych uruchomieniach |
--tls-cert <file> | plik certyfikatu twojej organizacji dla domeny Appliance, razem z --tls-key. Urządzenia korzystają wtedy z domeny |
--tls-key <file> | plik klucza do --tls-cert, bez hasła |
--no-tls | udostępniaj interfejs webowy przez zwykły HTTP: nic nie jest szyfrowane, tylko dla zaufanej sieci. Domyślnie; pozostaje wyłączone przy kolejnych uruchomieniach |
--tunnel | włącz tunel do interfejsów webowych urządzeń. Domyślnie; pozostaje włączony |
--no-tunnel | wyłącz ten tunel. Pozostaje wyłączony |
--extra-host <name> | dodatkowa nazwa interfejsu webowego; kilka razy albo rozdzielone przecinkami |
--2fa <policy> | zasada drugiego składnika: available, effective lub required. Domyślnie effective |
--interactive | zapytaj o adres i domenę Appliance i pozwól instalacji agenta zadać jej pytania |
--no-agent | nie instaluj własnego agenta urządzenia hosta. Docker musi być wtedy zainstalowany |
--http-proxy <url> | proxy HTTP Dockera, agenta i Appliance, na przykład http://proxy:3128 lub http://user@proxy:3128 bez hasła. "" je usuwa |
--https-proxy <url> | proxy HTTPS Dockera, agenta i Appliance; "" je usuwa |
--no-proxy <hosts> | hosty rozdzielone przecinkami, które omijają proxy |
--proxy-password-file <file> | plik lub potok (/dev/stdin), którego jedyny wiersz to hasło użytkownika z adresów URL proxy |
--no-start | zapisz i włącz wszystko, niczego nie uruchamiaj. Bez health checku i bez sprawdzenia chmury |
--skip-cloud-gate | nie czekaj, aż chmura IronFlock dotrze do Appliance |
--skip-login | bez logowania do rejestru: obrazy przychodzą z własnymi poświadczeniami Dockera albo są ładowane ręcznie. Klucz licencyjny jest wtedy opcjonalny |
--registry <host> | rejestr obrazów Appliance. Domyślnie instance-registry.ironflock.com |
--registry-user <user> | użytkownik logowania do rejestru. Domyślnie ironflock-appliance |
--bucket-url <url> | miejsce publikacji wydań Appliance. Domyślnie https://instance-registry.ironflock.com/dl/appliance |
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
Tryby HTTPS i to, co każdy z nich szyfruje, opisują strony HTTPS i certyfikaty oraz Bezpieczeństwo. Hasło proxy podlega zasadom z sekcji Sekrety: adres URL proxy z hasłem to błędny wiersz poleceń.
Klucz licencyjny
Klucz licencyjny to Instance Key, który tworzysz na ironflock.com w Profil → Instancje (Instalacja). Pochodzi z --license-file lub --license. Appliance, który jest już zainstalowany, zachowuje swój klucz bez żadnej z tych flag. Klucz w license.env, który nie jest prawidłowym kluczem licencyjnym (klucz licencyjny to UUID), każde polecenie Appliance ignoruje z ostrzeżeniem; uruchomienie potrzebuje wtedy klucza albo --skip-login.
Zmienne środowiskowe
Niektóre flagi biorą wartość domyślną ze zmiennej środowiskowej:
| Zmienna | Ustawia |
|---|---|
IRONFLOCK_VERSION, IRONFLOCK_CHANNEL | --version, --channel |
IRONFLOCK_INSTALL_DIR | --install-dir |
IRONFLOCK_REGISTRY, IRONFLOCK_REGISTRY_USER | --registry, --registry-user |
IRONFLOCK_BUCKET_URL | --bucket-url |
IRONFLOCK_2FA | --2fa |
IRONFLOCK_EXTRA_HOSTS | --extra-host |
IRONFLOCK_SKIP_CLOUD_GATE | --skip-cloud-gate |
IRONFLOCK_APPLIANCE_HOST, IRONFLOCK_APPLIANCE_DOMAIN | adres Appliance i jego domenę, o które pyta --interactive |
IRONFLOCK_CLOUD_TUNNEL_TCP | każda wartość inna niż 0, false, off lub no pozwala połączeniu tunelu z chmurą korzystać z portu TCP 7000, gdy nie ma proxy |
sudo pomija większość zmiennych twojej powłoki. Przekaż je przez sudo env NAME=value ironflock appliance install ....
Wpis wyborów instalacji
<install-dir>/install.json, wyłącznie dla roota, przechowuje wybory, których nie przechowuje ani .env, ani jednostki: rejestr i jego użytkownika, host Appliance (IRONFLOCK_APPLIANCE_HOST), --no-agent, bazowy adres pobierania z --bucket-url oraz wersję ironflock, który ostatnio zainstalował lub zaktualizował Appliance. Nie zawiera żadnego hasła, tokenu ani klucza.
Późniejsze appliance install, appliance update i appliance configure zachowują te wybory, chyba że flaga (lub jej zmienna) mówi inaczej. Podana flaga ma pierwszeństwo i zostaje zapisana. Aby wrócić do wartości domyślnej, podaj --registry "", --no-agent=false albo pustą IRONFLOCK_APPLIANCE_HOST.
Wpis, którego nie da się odczytać, albo wpis w nowszym formacie zatrzymuje install, update i configure, zanim cokolwiek zmienią, z kodem wyjścia 3. Komunikat mówi, co zrobić: odłożyć wpis na bok i zainstalować ponownie z flagami albo użyć nowszego ironflock.
Ponowne uruchomienie
Uruchomione na zainstalowanym Appliance polecenie doprowadza go do podanego wydania i opcji, zachowując jego sekrety i ustawienia. W ten sposób celowo zmieniasz wydanie: ironflock appliance install --version <version> ponownie pobiera, restartuje i sprawdza to wydanie, także gdy już działa.
Uruchomienie, które się zatrzymało, kontynuuje od miejsca, w którym się zatrzymało, gdy ponownie uruchomisz to samo polecenie.
Gdy health checki przejdą, instalacja usuwa kopię poprzedniego wydania zachowaną przez aktualizację (/opt/ironflock/.update-previous): wydanie, które zainstalowała, jest tym, które ma działać.
Od pierwszej zmiany utrata terminala lub sesji SSH (SIGHUP) ani wyjście, którego nikt już nie czyta (zamknięty potok), nie zatrzymują instalacji. Zatrzymują ją Ctrl-C i SIGTERM. Po utracie sesji SSH instalacja nadal pisze do terminala, aby hasło administratora nie przepadło. Przy ustawieniu use_pty w sudo terminal, który pozostaje otwarty, ale nie jest już czytany, może więc wstrzymać instalację, gdy ta trzyma blokadę instalacji.
Przykłady
# Zainstaluj Appliance; klucz licencyjny pochodzi z pliku
sudo ironflock appliance install --license-file license.txt
# Zainstaluj z HTTPS z własnego CA Appliance; klucz pochodzi ze standardowego wejścia
sudo ironflock appliance install --license-file - --tls < license.txt
# Zainstaluj za proxy; hosty pod .corp.example.com je omijają
sudo ironflock appliance install --https-proxy http://proxy.example.com:3128 --no-proxy .corp.example.com
# Zapytaj o adres i domenę Appliance i zainstaluj z HTTPS
sudo ironflock appliance install --license-file license.txt --interactive --tlsOdmowy i błędy
- Bazowy adres pobierania z
--bucket-url, którego jednostki nie mogą podać w tej postaci (zawiera dane logowania,%, białe znaki,$,\, cudzysłów, znak sterujący, bajty spoza UTF-8), jest odrzucany, zanim cokolwiek zostanie zapisane, z kodem wyjścia 2. - Polecenie odmawia działania z kodem wyjścia 3, gdy nie działa jako root, gdy nie da się odczytać wpisu wyborów instalacji i gdy inne uruchomienie trzyma blokadę instalacji dłużej niż godzinę oczekiwania. Odmawia też, gdy działający
ironflocknie jest/usr/local/bin/ironflock, i mówi, jak go tam zainstalować. - Krok, który się nie powiedzie, kończy polecenie kodem wyjścia 1. Uruchom ponownie to samo polecenie, aby kontynuować.
ironflock appliance configure
Zmienia ustawienia zainstalowanego Appliance: jego licencję, tryb TLS (także z własnym certyfikatem), proxy, dodatkowe nazwy hosta interfejsu, tunel i zasadę drugiego składnika.
ironflock appliance configure [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany.
Ustawienia pozostają w .env i plikach Appliance, więc aktualizacja je zachowuje. Ustawienie, którego nie podano, zachowuje to, co ma Appliance. Appliance restartuje tylko uruchomienie, które coś zmieniło, więc to samo polecenie wykonane dwa razy za drugim razem niczego nie zmienia.
| Flaga | Znaczenie |
|---|---|
--license <key> | nowy klucz licencyjny Appliance |
--license-file <file> | odczytaj nowy klucz licencyjny z tego pliku; - czyta standardowe wejście |
--skip-login | nie loguj się do rejestru nowym kluczem licencyjnym |
--registry <host> | rejestr, do którego trzeba się zalogować. Domyślnie ten, z którego synchronizuje się kopia lustrzana Appliance |
--registry-user <user> | użytkownik logowania do rejestru. Domyślnie ironflock-appliance |
--tls | udostępniaj interfejs przez HTTPS, z certyfikatem własnego CA Appliance |
--tls-cert <file> | twój plik certyfikatu TLS, razem z --tls-key |
--tls-key <file> | plik klucza do --tls-cert |
--no-tls | udostępniaj interfejs przez zwykły HTTP: nic nie jest szyfrowane, tylko dla zaufanej sieci |
--http-proxy <url> | adres URL proxy HTTP; pusty usuwa proxy |
--https-proxy <url> | adres URL proxy HTTPS; pusty usuwa proxy |
--no-proxy <list> | co omija proxy: lista rozdzielona przecinkami |
--extra-host <name> | dodatkowa nazwa interfejsu; powtórz flagę albo podaj listę rozdzieloną przecinkami |
--tunnel | włącz tunel interfejsów webowych aplikacji |
--no-tunnel | wyłącz tunel |
--2fa <policy> | zasada drugiego składnika: available, effective lub required |
--bucket-url <url> | miejsce publikacji wydań Appliance, dla pliku Caddyfile potrzebnego do TLS. Domyślnie https://instance-registry.ironflock.com/dl/appliance |
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
- Nowa licencja (
--license,--license-filealbo--license-file -dla standardowego wejścia) musi otworzyć rejestr, zanim zostanie zapisana. Jej logowanie do rejestru trafia do--registryjako--registry-user, a w przeciwnym razie do tych, które wybrała instalacja (wpis), a w przeciwnym razie do rejestru, z którego synchronizuje się kopia lustrzana Appliance. Logowanie z--registrylub--registry-userzachowuje je we wpisie dla aktualizacji. --tls-certi--tls-keyinstalują twój certyfikat i włączają TLS, a urządzenia przechodzą na domenę Appliance.--http-proxy ""lub--https-proxy "", podane same, usuwają proxy.--no-agentz instalacji pozostaje bez zmian.- Plik Caddyfile potrzebny do TLS pochodzi z
--bucket-url, a w przeciwnym razie z miejsca, z którego instalacja wzięła wydania.
Przykłady
# Nadaj Appliance nowy klucz licencyjny z pliku
sudo ironflock appliance configure --license-file license.txt
# Udostępniaj interfejs z certyfikatem twojej organizacji
sudo ironflock appliance configure --tls-cert wildcard.crt --tls-key wildcard.key
# Ustaw proxy i ponownie je usuń
sudo ironflock appliance configure --https-proxy http://proxy.example.com:3128 --no-proxy .corp.example.com
sudo ironflock appliance configure --https-proxy ""
# Wymagaj drugiego składnika od każdego użytkownika
sudo ironflock appliance configure --2fa requiredZanim ustawisz --2fa required, upewnij się, że każde konto ma drugi składnik: użytkownik bez niego nie może się już zalogować (Konta i dostęp).
Kiedy polecenie odmawia
Polecenie odmawia działania z kodem wyjścia 3 i niczego nie zmienia, gdy nie działa jako root, gdy nie da się odczytać wpisu wyborów instalacji, gdy inne uruchomienie trzyma blokadę instalacji dłużej niż godzinę oczekiwania oraz gdy aktualizacja nie została dokończona (Gdy aktualizacja nie została dokończona).
ironflock appliance update
Aktualizuje Appliance na tej maszynie do najnowszego wydania jego kanału albo do wydania podanego w --version. Wydanie jest sprawdzane kluczem wydań Appliance, jego obrazy są pobierane, a Appliance restartuje się z nim. Polecenie czeka, aż każda usługa będzie sprawna, a chmura IronFlock dotrze do Appliance. Appliance zachowuje swoje sekrety i ustawienia. Obrazy wcześniejszych wydań są usuwane, gdy nowe jest sprawne.
ironflock appliance update [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany. Pyta: o nic, poza --discard-previous.
| Flaga | Znaczenie |
|---|---|
--version <x.y.z> | wydanie do zainstalowania albo latest dla najnowszego z kanału (domyślnie). Także starsze wydanie, aby celowo wrócić |
--channel <channel> | zmień kanał: production, test lub all. Domyślnie zainstalowany |
--bucket-url <url> | miejsce publikacji wydań Appliance |
--discard-previous | niczego nie aktualizuj: usuń kopię poprzedniego wydania zachowaną przez aktualizację i nie zmieniaj niczego więcej (poniżej) |
Wydania pochodzą z --bucket-url, a w przeciwnym razie z IRONFLOCK_BUCKET_URL, a w przeciwnym razie z miejsca, z którego wzięła je instalacja (podaje je wpis jej wyborów, /opt/ironflock/install.json, albo jej jednostki), a w przeciwnym razie z IronFlock. Rejestr, jego użytkownik, host Appliance i --no-agent pozostają takie, jak wybrała je instalacja.
Nowy kanał pozostaje, gdy aktualizacja się powiedzie; przy wycofaniu wraca poprzedni kanał. Apply update w interfejsie uruchamia tę samą aktualizację.
Gdy testy przejdą, instalacja lub aktualizacja przenosi też własne urządzenie Appliance z sekretu, który wcześniej był wspólny dla wszystkich Appliance, na wartość APPLIANCE_DEVICE_SECRET. Jego agent restartuje się wtedy 35 sekund po uruchomieniu. Przeniesienie, którego nie da się wykonać, to ostrzeżenie z przyczyną; następna instalacja lub aktualizacja próbuje ponownie.
Już aktualny
Appliance, który już działa na najnowszym wydaniu swojego kanału (albo na wydaniu podanym w --version), z tym samym kanałem i bazowym adresem pobierania, pozostaje bez zmian. Polecenie o tym informuje i kończy się kodem wyjścia 0; z --json result to nothing-to-do. Aby celowo ponownie pobrać, zrestartować i sprawdzić to wydanie, uruchom ironflock appliance install --version <version>.
Dotyczy to tylko Appliance, który ostatnia aktualizacja pozostawiła w czystym stanie. Przy zachowanej kopii poprzedniego wydania (niedokończona aktualizacja) albo pliku stanu z failed lub running aktualizacja wykonuje wszystko ponownie.
Wycofanie
Zanim aktualizacja cokolwiek zmieni, zachowuje pliki działającego wydania w /opt/ironflock/.update-previous. Gdy aktualizacja nie powiedzie się po zmianie Appliance, te pliki są przywracane, a poprzednie wydanie startuje ponownie. Nie wymaga to sieci, ponieważ jego obrazy są na maszynie. Próba jest podejmowana do trzech razy. Potem polecenie się poddaje i pozostawia pliki poprzedniego wydania na miejscu, tak aby przy następnym starcie Appliance uruchomiło się to wydanie.
Aktualizacja, która nie powiedzie się, zanim cokolwiek zmieni, niczego więcej nie zmienia i o tym informuje: na przykład wydanie, którego nie ma lub które nie jest podpisane, albo bazowy adres pobierania, który nie odpowiada.
Wydanie może wymagać nowszego ironflock niż ten, który działa. Wtedy nic się nie zmienia, a polecenie podaje, który ironflock trzeba najpierw zainstalować. appliance update nie aktualizuje samo ironflock; najnowszy instaluje ironflock self-update.
Plik stanu i ponawianie
Aktualizacja zapisuje swój postęp w triggers/apply-update.status, tak jak aktualizacja z interfejsu, więc interfejs go pokazuje. Jej wyjście trafia też do triggers/apply-update.log. Timer, który ponawia nieudaną aktualizację z interfejsu, nie ponawia aktualizacji tego polecenia, która się nie powiodła albo została zatrzymana, zanim cokolwiek zmieniła.
Przerwania
- Ctrl-C lub SIGTERM, zanim aktualizacja cokolwiek zmieni, zatrzymuje ją. Później pierwsze z nich przywraca poprzednie wydanie (kod wyjścia 130), a drugie zatrzymuje od razu.
- Utrata terminala lub sesji SSH (SIGHUP) albo wyjście, którego nikt już nie czyta, nie zatrzymuje aktualizacji. Aktualizacja i wycofanie przebiegają do końca. Plik stanu i
ironflock statusmówią, jak się zakończyła. - Przez
--hostbez terminala pierwsze dwa Ctrl-C docierają do maszyny. Po pierwszym polecenie czeka do 30 minut, aż aktualizacja tam się zakończy; po drugim 15 sekund; trzecie kończy je tutaj od razu. Utrata sesji tutaj albo SIGTERM to nie Ctrl-C: polecenie kończy się tutaj od razu. Ilekroć kończy się tutaj pierwsze, aktualizacja trwa dalej na maszynie, aironflock --host <machine> statuspokazuje, jak się zakończyła.
Gdy aktualizacja nie została dokończona
Aktualizacja nie została dokończona, gdy zaczęła zmieniać Appliance, a potem się nie zakończyła: została zatrzymana, maszyna się wyłączyła albo jej wycofanie nie uruchomiło poprzedniego wydania. Katalog instalacji może wtedy zawierać pliki dwóch wydań. Zachowana kopia podaje wydanie, o którym wiadomo, że działa, i podaje je też ironflock status.
- Następna aktualizacja najpierw przywraca tę kopię, a potem aktualizuje. Kopia, której nie da się odczytać ani przywrócić, zatrzymuje aktualizację z kodem wyjścia 3, a błąd wskazuje
ironflock appliance install --version <version>. - Cogodzinny timer ponawiania sam przywraca kopię, restartuje to wydanie i je sprawdza, także gdy nie ma nowszego wydania.
configure,rotate,revoke-direct-access,restoreireset-admin-passwordodmawiają działania przed jakąkolwiek zmianą, z kodem wyjścia 3. Podają trzy wyjścia z sytuacji:ironflock appliance update;ironflock appliance install --version <version>; oraz, bez sieci,ironflock appliance update --discard-previous.backuptylko czyta i ostrzega.start,stopirestartnie ruszają kopii.removeusuwa kopię razem z pozostałymi plikami Appliance.appliance installdziała jak zawsze i, gdy jego health checki przejdą, usuwa kopię.
Aby ręcznie zająć się plikami niedokończonej aktualizacji, najpierw ustaw IRONFLOCK_UPDATE_RETRY=off w .env. W przeciwnym razie timer ponawiania przywróci poprzednie wydanie w ciągu mniej więcej godziny. To ustawienie wyłącza timer ponawiania w całości, łącznie z jego wycofaniem.
--discard-previous
ironflock appliance update --discard-previous [--yes]Niczego nie aktualizuje. Usuwa kopię poprzedniego wydania zachowaną przez aktualizację (/opt/ironflock/.update-previous), w dowolnym stanie, także gdy nie da się jej odczytać, i niczego więcej nie zmienia. Nie wymaga sieci.
To wyjście z sytuacji bez sieci, gdy aktualizacja nie została dokończona, a jej poprzednie wydanie nie startuje ponownie. Pliki katalogu instalacji pozostają takie, jakie są teraz, tego wydania nie da się już przywrócić, a polecenia, które odmawiały, znów działają.
Mówi, co usuwa, i najpierw pyta, z wstępnie wybraną odpowiedzią „Nie”; --yes odpowiada „tak”. Bez terminala albo z --json wymaga --yes, w przeciwnym razie kończy się kodem wyjścia 4. Bez kopii informuje o tym i kończy się kodem wyjścia 0. Nie działa z --version, --channel ani --bucket-url (kod wyjścia 2). Z --json wynik ma action (discarded, cleaned lub none), path, version, state i removed.
Przykłady
# Zaktualizuj do najnowszego wydania z kanału
sudo ironflock appliance update
# Zainstaluj wydanie 1.6.41, także aby do niego wrócić
sudo ironflock appliance update --version 1.6.41
# Przejdź na kanał test i odczytaj wynik jako JSON
sudo ironflock appliance update --channel test --json
# Usuń kopię poprzedniego wydania, bez sieci
sudo ironflock appliance update --discard-previousWynik
{"from":"1.6.40","target":"1.6.41","version":"1.6.41","result":"updated"}| Pole | Znaczenie |
|---|---|
from | wydanie sprzed aktualizacji |
target | wydanie, do którego zmierzała aktualizacja |
version | wydanie zainstalowane teraz |
result | updated; up-to-date, gdy Appliance miał już to wydanie, a aktualizacja ponownie je pobrała, zrestartowała i sprawdziła; nothing-to-do, gdy Appliance pozostał bez zmian |
Nieudana aktualizacja to błąd, który mówi, czy Appliance wrócił do poprzedniego wydania. Z --json jego kind ma jedną z tych wartości, także gdy aktualizację przerwano:
| Rodzaj | Znaczenie |
|---|---|
rolled_back | aktualizacja się nie powiodła, a poprzednie wydanie znów działa |
rollback_failed | aktualizacja się nie powiodła, a wycofanie nie uruchomiło poprzedniego wydania |
not_rolled_back | aktualizacja się nie powiodła i nie została wycofana |
unchanged | aktualizacja nie powiodła się, zanim cokolwiek zmieniła; na przykład bazowy adres pobierania nie odpowiada |
copy_left | nowe wydanie działa, ale jego kopii poprzedniego wydania nie dało się ani usunąć, ani oznaczyć. Timer ponawiania może przywrócić poprzednie wydanie w ciągu mniej więcej godziny; błąd podaje wyjścia z sytuacji (najpierw IRONFLOCK_UPDATE_RETRY=off, potem --discard-previous) |
| Kod wyjścia | Znaczenie |
|---|---|
| 0 | zaktualizowano, już aktualny albo nic do zrobienia |
| 1 | aktualizacja się nie powiodła, wycofana lub nie; także copy_left |
| 2 | błędny wiersz poleceń, na przykład bazowy adres pobierania, którego jednostki nie mogą podać |
| 3 | brak roota; brak zainstalowanego Appliance; inne uruchomienie trzymało blokadę instalacji dłużej niż czas oczekiwania; zachowana kopia, której nie da się odczytać ani przywrócić; wpis wyborów instalacji, którego nie da się odczytać; potrzebny nowszy ironflock |
| 130 | przerwano, z tymi samymi rodzajami |
ironflock appliance start
Uruchamia Appliance, gdy nie działa: ironflock.service uruchamia jego kontenery (docker compose up), a jego watchdog oraz pozostałe ścieżki i timery startują ponownie. Uruchomienie usług trwa minutę lub dwie; ironflock status pokazuje ich stan zdrowia.
ironflock appliance start [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany. Pyta: o nic. Polecenie nie ma własnych flag.
Gdy przywrócenie pozostawiło role bazy danych ze starymi hasłami, ponieważ Appliance wtedy nie działał, przyjmują one hasła z przywróconego .env, gdy tylko ich bazy danych działają (do minuty). Rola, która nie odpowiada, czeka do następnego startu, z ostrzeżeniem, a start trwa dalej.
sudo ironflock appliance start
sudo ironflock appliance start --jsonGdy inne uruchomienie zmienia Appliance, polecenie czeka do 30 sekund i o tym informuje; gdy tamto uruchomienie nadal trwa, niczego nie zmienia i kończy się kodem wyjścia 3.
ironflock appliance stop
Zatrzymuje Appliance: jego watchdog oraz pozostałe ścieżki i timery i to, co uruchomiły, a potem ironflock.service, który zatrzymuje i usuwa jego kontenery (docker compose down). Jego dane pozostają.
ironflock appliance stop [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany. Pyta: tak, gdy już powie, co kończy zatrzymanie; --yes odpowiada.
Interfejs przechodzi w tryb offline, podobnie jak każde urządzenie, które łączy się z Appliance, także agent tej maszyny. ironflock appliance start ponownie uruchamia Appliance, podobnie jak następny rozruch. Polecenie nie ma własnych flag.
# Zatrzymaj Appliance; polecenie mówi, co to kończy, i pyta
sudo ironflock appliance stop
# Zatrzymaj go bez pytania
sudo ironflock appliance stop --yesOdpowiedź „nie” albo pytanie bez terminala i bez --yes kończy polecenie kodem wyjścia 4. Gdy inne uruchomienie zmienia Appliance, polecenie czeka tak jak start.
ironflock appliance restart
Restartuje Appliance: ironflock.service zatrzymuje jego kontenery i uruchamia je ponownie (docker compose down, potem up), tak jak robi to jego watchdog. Ścieżki i timery zatrzymane przez appliance stop startują ponownie.
ironflock appliance restart [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany. Pyta: o nic. Polecenie nie ma własnych flag.
Interfejs i urządzenia, które łączą się z Appliance, są offline przez minutę lub dwie; jego dane pozostają. ironflock status pokazuje stan zdrowia usług, gdy już działają. Role bazy danych, które przywrócenie pozostawiło ze starymi hasłami, przyjmują hasła z .env, tak jak przy start.
sudo ironflock appliance restart
sudo ironflock appliance restart --jsonGdy inne uruchomienie zmienia Appliance, polecenie czeka tak jak start.
ironflock appliance logs
Pokazuje, co zapisały usługi Appliance, tak jak pokazuje to docker compose logs: domyślnie ostatnie 100 wierszy każdej usługi. Niczego nie zmienia.
ironflock appliance logs [<service>...] [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany. Pyta: o nic.
Podaj usługi, aby zobaczyć tylko ich wiersze, na przykład router, backend, kratos lub caddy.
| Flaga | Znaczenie |
|---|---|
--lines <n> | ostatnie n wierszy każdej usługi albo all. Domyślnie 100; z --since wszystkie |
--since <time> | tylko wiersze od danego momentu: czas wstecz od teraz (10m, 2h, 3d) albo czas według zegara tej maszyny (2026-11-10 09:00, 09:00, 2026-11-10T09:00:00Z) |
--follow | pokazuj kolejne wiersze zapisywane przez usługi, aż do Ctrl-C |
Z --json każdy wiersz jest obiektem JSON, z wierszem jako komunikatem.
# Ostatnie 100 wierszy każdej usługi
sudo ironflock appliance logs
# Wszystko, co backend zapisał w ostatniej godzinie
sudo ironflock appliance logs backend --since 1h
# Ostatnie 20 wierszy routera i Kratos, potem każdy nowy wiersz aż do Ctrl-C
sudo ironflock appliance logs router kratos --follow --lines 20ironflock appliance reset-admin-password
Nadaje użytkownikowi interfejsu admin nowe hasło, dla operatora, który je utracił. Hasło jest ustawiane najpierw w bazie danych, co kończy każdą aktywną sesję administratora, a potem w .env jako APPLIANCE_ADMIN_PASSWORD. Appliance musi działać.
ironflock appliance reset-admin-password [flags]Działa w: Linuksie z działającym Appliance. Root: wymagany.
| Flaga | Znaczenie |
|---|---|
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
Nowe hasło jest pokazywane jeden raz i tylko w terminalu. Bez terminala oraz z --json polecenie podaje zamiast tego, gdzie jest zapisane. Odmawia działania z kodem wyjścia 3, gdy aktualizacja nie została dokończona (Gdy aktualizacja nie została dokończona).
sudo ironflock appliance reset-admin-passwordironflock appliance backup
Zapisuje w archiwum tar.gz wszystko z Appliance, czego nie da się utworzyć ponownie: .env ze wszystkimi sekretami, license.env, lokalny CA certyfikatu TLS, parę kluczy tokenów rejestru, spis sekretów i rotation.log.
ironflock appliance backup [-o <file>] [flags]Działa w: Linuksie. Root: wymagany.
| Flaga | Znaczenie |
|---|---|
-o, --output <file> | zapisz archiwum w tym pliku, tworzonym od nowa i czytelnym tylko dla roota |
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
Bez -o archiwum trafia na standardowe wyjście, które nie może być terminalem. Plik, do którego jest przekierowane, staje się czytelny tylko dla jego właściciela.
Ostrzeżenie: Archiwum zawiera wszystkie sekrety Appliance. Utraconego
FLEETDB_SECRET_KEYSaniFILE_CRED_KEYnie da się odzyskać w żaden inny sposób. Zaszyfruj archiwum i przechowuj je razem z kopiami zapasowymi wolumenów.
Archiwum nie zawiera: certyfikatu TLS i jego klucza (wygenerowany certyfikat jest ponownie podpisywany przez CA), konfiguracji Kratos, plików wydania ani wolumenów Dockera. Z certs/ca i registry-token-certs bierze pliki, które tworzy tam instalacja (rootCA.crt, rootCA.key, rootCA.srl; token_private.key, token_public.crt, token_public.der, także z .prev lub .new). Każdy inny plik w tych folderach jest pomijany, z ostrzeżeniem, które go wskazuje, ponieważ restore nie przyjmuje żadnego innego.
# Zapisz archiwum w pliku, który może odczytać tylko root
sudo ironflock appliance backup -o /root/appliance-secrets.tar.gz
# Zapisz je na standardowe wyjście, do pliku
sudo ironflock appliance backup > appliance-secrets.tar.gzironflock appliance restore
Przywraca do katalogu instalacji kopię zapasową zapisaną przez appliance backup.
ironflock appliance restore <file> [flags]Działa w: Linuksie. Root: wymagany.
| Flaga | Znaczenie |
|---|---|
--force | zastąp sekrety zainstalowanego Appliance |
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
Polecenie bierze pliki, które zawiera kopia zapasowa, i nic poza nimi, każdy z właścicielem i trybem, jakie nadaje mu instalacja. W certs/ca i registry-token-certs bierze tylko pliki, które tworzy tam instalacja. Archiwum, które zawiera cokolwiek więcej, jest odrzucane, zanim cokolwiek się zmieni, a błąd podaje, co to jest.
Sekrety zainstalowanego Appliance są zastępowane tylko z --force; jego .env zostaje zachowany jako .env.prev. Bez --force przywrócenie na zainstalowany Appliance jest odrzucane przed jakąkolwiek zmianą, z kodem wyjścia 3, a komunikat podaje przywrócenie z --force, a potem appliance restart.
Klucz licencyjny z kopii zapasowej, który nie jest prawidłowym kluczem licencyjnym, jest przywracany bez zmian, z ostrzeżeniem: każde polecenie Appliance go ignoruje.
Hasła baz danych
- Gdy baza danych Appliance działa, jej role od razu przyjmują przywrócone hasła. Zrestartuj wtedy Appliance (
appliance restart), aby każda usługa odczytała przywrócone pliki. - Gdy Appliance nie działa, jego role bazy danych zachowują dotychczasowe hasła. Przywrócenie je oznacza (
<install-dir>/.db-roles-pending;roles_pendingz--json). Następny start ustawia je zgodnie z przywróconym.env:appliance startlubrestart, start przy rozruchu, instalacja albo aktualizacja.
# Przywróć na zainstalowany Appliance, a potem go zrestartuj
sudo ironflock appliance restore appliance-secrets.tar.gz --force
sudo ironflock appliance restartOdmawia działania z kodem wyjścia 3, gdy aktualizacja nie została dokończona (Gdy aktualizacja nie została dokończona).
ironflock appliance rotate
Nadaje jednemu sekretowi Appliance nową wartość. Nowa wartość trafia tam, gdzie przechowywana jest stara (rola bazy danych, plik urządzenia agenta, para kluczy tokenów rejestru), oraz do .env. Potem odtwarzane są tylko usługi, które ją odczytują, a polecenie sprawdza, czy są sprawne.
ironflock appliance rotate <name> [flags]Działa w: Linuksie z działającym Appliance. Root: wymagany. Pyta: o sekret, który przechowuje też coś innego; --yes odpowiada.
| Flaga | Znaczenie |
|---|---|
--keep-direct-access | z FILE_CRED_KEY: wcześniej utworzone klucze dostępu bezpośredniego działają dalej |
--revoke-direct-access | z FILE_CRED_KEY: wcześniej utworzone klucze dostępu bezpośredniego przestają działać i są usuwane |
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
.env sprzed zmiany pozostaje jako .env.prev, czytelny tylko dla roota. rotation.log wymienia każdą rotację, nigdy wartość.
- Sekret, który przechowuje też coś innego (dane, urządzenie, token), wymaga pytania przed rotacją;
--yesodpowiada. FILE_CRED_KEYwymaga wyboru dla kluczy dostępu bezpośredniego klientów.--keep-direct-access: działają dalej, przy planowej rotacji; zakończ ją później poleceniemrevoke-direct-access.--revoke-direct-access: przestają działać i są usuwane, po podejrzeniu wycieku.APPLIANCE_ADMIN_PASSWORDdziała tak samo jakreset-admin-password.
Sekrety, które polecenie poddaje rotacji:
POSTGRES_PASSWORD, PGPASSWORD_KRATOS, PGPASSWORD_ACCT_MANAGER,
PGPASSWORD_ACCT_PUSHER, PGPASSWORD_EXT_ACCT_USER, PGPASSWORD_AUDIT_SANDBOX,
DATASERVICE_PASSWORD, WAMP_SYSTEM_SECRET, WAMP_SECRET_SVC_VDM,
WAMP_SECRET_SVC_IDE, WAMP_SECRET_SVC_IDE_PROXY, WAMP_SECRET_SVC_GIT,
WAMP_SECRET_SVC_REGISTRY, WAMP_SECRET_SVC_REGISTRY_PROXY,
WAMP_SECRET_SVC_ACCT, WAMP_SECRET_SVC_ACCT_PUSH, WAMP_SECRET_SVC_PAYMENT,
WAMP_SECRET_SVC_FLEETDB, WAMP_SECRET_SVC_FLEETFILES, WAMP_SECRET_SVC_AI,
WAMP_SECRET_SVC_TUNNEL, WAMP_SECRET_SVC_RENDERER, WAMP_SECRET_SVC_WEBSERVER,
WAMP_SECRET_SVC_REAPI, WAMP_SECRET_SVC_AUTH, RENDER_TICKET_KEY,
FILES_FORWARD_SECRET, KRATOS_WEBHOOK_SECRET, KRATOS_SECRETS_PAGINATION,
REGISTRY_HTTP_SECRET, TUNNEL_DASHBOARD_PASSWORD, EDGE_SESSION_SECRET,
OBJECTSTORE_ADMIN_ACCESS_KEY, OBJECTSTORE_ADMIN_SECRET_KEY, FILE_CRED_KEY,
FLEETDB_SECRET_KEYS, KRATOS_SECRETS_COOKIE, KRATOS_SECRETS_CIPHER,
APPLIANCE_DEVICE_SECRET, APPLIANCE_ADMIN_PASSWORD, REGISTRY_TOKEN_KEYCo rotacja robi z każdym rodzajem sekretu i które sekrety poddawać rotacji wyłącznie wspólnie z zespołem IronFlock, opisuje sekcja Rotacja wewnętrznego sekretu.
# Poddaj rotacji sekret jednej usługi
sudo ironflock appliance rotate WAMP_SECRET_SVC_AI
# Planowa rotacja klucza plików; klucze dostępu bezpośredniego działają dalej
sudo ironflock appliance rotate FILE_CRED_KEY --keep-direct-access --yesOdmawia działania z kodem wyjścia 3, gdy aktualizacja nie została dokończona (Gdy aktualizacja nie została dokończona).
ironflock appliance revoke-direct-access
Kończy rotację FILE_CRED_KEY przeprowadzoną z --keep-direct-access. Każdy klucz dostępu bezpośredniego klientów, który nie został utworzony z bieżącym FILE_CRED_KEY, przestaje działać i jest usuwany; sam klucz pozostaje. Usługa fleetfiles jest odtwarzana i zgłasza, co usunęła.
ironflock appliance revoke-direct-access [flags]Działa w: Linuksie z zainstalowanym Appliance. Root: wymagany. Pyta: tak, ponieważ właściciele tych kluczy muszą utworzyć nowe; --yes odpowiada.
| Flaga | Znaczenie |
|---|---|
--install-dir <directory> | katalog instalacji. Domyślnie /opt/ironflock |
sudo ironflock appliance revoke-direct-accessOdmawia działania z kodem wyjścia 3, gdy aktualizacja nie została dokończona (Gdy aktualizacja nie została dokończona).
ironflock appliance remove
Usuwa IronFlock Appliance z tej maszyny i cofa to, co jego instalacja zapisała na hoście. Jego dane pozostają, chyba że podasz --purge.
ironflock appliance remove [flags]Działa w: Linuksie. Root: wymagany. Pyta: tak, gdy już wymieni, co zostanie usunięte, a co pozostanie. Pytanie ma wstępnie wybraną odpowiedź „Nie”: sam Enter niczego nie usuwa.
| Flaga | Znaczenie |
|---|---|
--purge | usuń też to, co bez niej pozostaje: katalog instalacji, wolumeny i obrazy |
--force | kontynuuj mimo nieudanego wywołania i porzuć wpis zmian hosta, których cofnięcie wciąż się nie udaje |
--install-dir <directory> | katalog instalacji. Domyślnie ten, który wskazuje jego jednostka, a w przeciwnym razie /opt/ironflock |
Polecenie usuwa:
- jednostki systemd Appliance, jego kontenery i jego sieć w Dockerze;
- logowanie Dockera do rejestru IronFlock;
- każdą zmianę, którą jego instalacja zapisała na hoście (
/etc/ironflock/appliance.json): zapisane przez nią ustawienia proxy, jej ustawienia wdaemon.jsonDockera, ustawienia dziennika systemd i zamaskowane cele uśpienia; - kopię poprzedniego wydania, którą aktualizacja zachowała na potrzeby wycofania (
.update-previousw katalogu instalacji).
Anonimowe wolumeny kontenerów Appliance również są usuwane, z --purge lub bez: nigdy wolumen nazwany i nigdy taki, którego kontener nadal używa.
Co pozostaje
Bez --purge dane Appliance pozostają, aby późniejsza instalacja mogła z nich skorzystać:
- katalog instalacji (
/opt/ironflock) z.env, który zawiera sekrety,license.env, wpisem wyborów instalacji (install.json) i oznaczeniem haseł baz danych, których przywrócenie nie mogło ustawić (.db-roles-pending); - wolumeny w Dockerze.
--purge usuwa także je oraz obrazy: to, co przechowywał Appliance, znika na dobre.
Także z --purge pozostają:
- Sam Docker i agent urządzenia hosta. Agenta usuwa
ironflock agent remove. - Plik zapisany przez Appliance, który od tego czasu został zmieniony, na przykład ustawienia proxy ustawione przez
ironflock agent configure, razem z drop-inami, które go wskazują, aby agent zachował swoje proxy. - To, co wpis agenta (
/opt/ironflock/device-init/installed.json) podaje jako należące do agenta, oraz cele uśpienia zamaskowane przez agenta. Usuwa jeironflock agent remove.
Gdy wywołanie się nie powiedzie
Gdy wywołanie cofające zmianę wciąż się nie udaje (na przykład restart Dockera, który usunięto ręcznie), wpis pozostaje. Polecenie podaje, które wywołanie się nie powiodło, i kończy się błędem. Uruchom je ponownie, gdy to zacznie działać, albo z --force, które mimo to porzuca wpis i kontynuuje mimo jednostki, której nie da się wyłączyć, lub Dockera, który nie odpowiada.
Gdy działa instalacja, aktualizacja lub inna zmiana Appliance, polecenie czeka do 30 sekund i o tym informuje. Gdy tamto uruchomienie nadal trwa, niczego nie zmienia i kończy się kodem wyjścia 3.
Przykłady
# Usuń Appliance i zachowaj jego dane; polecenie wymienia, co zostanie usunięte, i pyta
sudo ironflock appliance remove
# Usuń Appliance ze wszystkimi danymi, bez pytania
sudo ironflock appliance remove --purge --yesOdpowiedź „nie” albo pytanie bez terminala i bez --yes kończy polecenie kodem wyjścia 4.
Zanim usuniesz Appliance na dobre, przenieś lub zwolnij jego licencję, póki jest jeszcze online (Wycofanie z eksploatacji).