Dlaczego Vigo
Prostota, bezpieczeństwo, niezawodność, skalowalność i cena — czym Vigo różni się od każdego innego systemu zarządzania konfiguracją.
Jeden zasób. Jeden plik.
Utwórz użytkownika z sudo bez hasła i kluczem SSH — zadanie, które wykonuje każdy zespół. W Vigo to jeden zasób w jednym pliku, z wbudowanymi kluczami SSH, sudo i sekretami.
name: os-users resources: - name: alice type: user username: alice comment: Alice Nguyen shell: /bin/bash groups: sudo, adm state: present password: secret:vigo/os-users/alice sudo_nopasswd: true authorized_keys: | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJqR... alice@laptop
📄 Prostota
Jeden serwer w dowolnej skali
Bez compile masters, bez puli roboczych, bez klastrów bazodanowych, bez load balancerów. Jeden proces, jeden plik SQLite, jeden katalog konfiguracji. Architektura nie zmienia się niezależnie od tego, czy zarządzasz 10 czy 100 000 węzłów.
~8 MiB statyczny binarny agent
Bez Ruby, bez Pythona, bez JVM, bez ekosystemu menedżera pakietów na zarządzanych węzłach. Skopiuj binarium, uruchom je. Zero zależności środowiska uruchomieniowego.
Jeden format konfiguracji, jedna ścieżka konfiguracji
Istnieje dokładnie jeden sposób konfigurowania Vigo: edytuj pliki YAML i publikuj. Bez zapisów przez API, bez konfiguracji w bazie danych, bez mutacji w interfejsie. Jedno źródło prawdy, jeden format, jedno narzędzie.
Bez DSL
Językiem konfiguracji jest YAML. Szablony Go pojawiają się tylko wewnątrz atrybutów content:. Brak języka własnego do nauki, brak kompilatora, brak osobliwości parsera.
Uruchomienie jednym poleceniem
curl | sudo sh pobiera binarium, generuje certyfikaty TLS, rejestruje się z serwerem, instaluje usługę i weryfikuje łączność. Pod zarządzaniem w 30 sekund.
Siedem rodzin OS z jednej bazy kodu
Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos i Windows. Wpisz type: service, a system przekieruje do systemd, launchctl, rc.d, rcctl, SMF lub sc.exe.
Zasoby warunkowe bez DSL if
when: "os_family('debian')" na dowolnym zasobie lub configcrate. Logika boolowska, wbudowane funkcje jak has_command, arch, version_ge. Serwer ocenia, co może, resztę przekazuje agentowi. Bez DSL, bez wtyczek.
Widoczność — śledź każdą decyzję do jej źródła
Jedno polecenie — vigocli config trace danlap — pokazuje pełny łańcuch rozwiązywania dla dowolnego węzła. Każdy configcrate, zmienna, zależność, znacznik zgodności, zwolnienie i warunek śledzony do dokładnego pliku, który go zdefiniował.
when: ze stroną oceny. Warunki po stronie serwera (jak changed) są rozwiązywane przed wysyłką; warunki po stronie agenta (jak os_family i hour_range) uruchamiają się na zarządzanym węźle. Zmienne szablonu są rozwiązywane i pokazane pod oryginalnym wyrażeniem.🔒 Bezpieczeństwo
Podpisy ED25519 per żądanie
Każde żądanie agenta jest indywidualnie podpisane i weryfikowane względem przechowywanych kluczy publicznych. Nie tylko TLS — rzeczywisty kryptograficzny dowód tożsamości przy każdym wywołaniu API. Odtworzenie i podszywanie wymagają klucza prywatnego, nie tylko ważnego certyfikatu.
Sekrety nigdy nie są materializowane
Prefiks secret: jest rozwiązywany przy załadowaniu konfiguracji przez dostawcę z możliwością podłączenia i usuwany przed transmisją. Sekrety nigdy nie pojawiają się w plikach YAML, zmiennych środowiskowych, logach, wierszach bazy danych, ładunkach gRPC ani raportach wyników uruchomień.
Brak trybu jawnego
mTLS jest jedynym transportem. Brak flagi --no-ssl, brak rezerwy jawnej, brak "trybu deweloperskiego" pomijającego szyfrowanie. Niezabezpieczona ścieżka nie istnieje w bazie kodu.
Jednorazowe tokeny rejestracji
Tokeny są haszowane bcrypt w spoczynku i powiązane ze wzorcami glob nazwy hosta. Token pasujący do *.web.prod nie może zarejestrować maszyny o nazwie db01.staging. Użyty raz, trwale unieważniony.
Zabezpieczenia ochrony własnej
Potok walidacji blokuje każdy zasób, który celuje w binarium agenta, binarium serwera, katalog konfiguracji lub jednostkę usługi. Nawet tryb --dangerous nie może ominąć tych kontroli. System nie może zostać użyty do własnego zniszczenia.
Zweryfikowane binarium agenta
Binarium agenta jest dystrybuowane z podpisami ED25519 i sumami kontrolnymi SHA-256, weryfikowanymi przy uruchomieniu. Utwardzanie binarium obejmuje PIE, pełne RELRO, protektory stosu, usunięte symbole i LTO.
⚡ Niezawodność
Idempotentność egzekwowana w czasie publikacji
Większość narzędzi CM traktuje idempotentność jako dyscyplinę, którą operator musi utrzymywać. Vigo czyni z niej niezmiennik czasu publikacji: config publish waliduje idempotentność wraz ze składnią, więc nieidemp otentna konfiguracja zawodzi przy publikacji, a nie ląduje na flocie. Działa, ponieważ każdy executor sprawdza przed działaniem — file: porównuje SHA-256, package: sprawdza zainstalowaną wersję, service: sprawdza is-active/is-enabled przed wykonaniem czegokolwiek. Ponowna ocena zasobu 86 400 razy dziennie w kadencji 1 sekundy nie wprowadza żadnych zmian i żadnego szumu audytowego, dopóki coś rzeczywiście nie podlegnie dryfowi.
Podpisane pakiety zasad z konwergencją offline
Serwer podpisuje pakiety ED25519. Agent weryfikuje, buforuje w LMDB i kontynuuje konwergencję w nieskończoność, jeśli serwer zniknie. Oczekujące wyniki kolejkowane i opróżniane po ponownym połączeniu.
Adaptacyjna promocja strumienia
Agenci domyślnie korzystają z lekkiego odpytywania bezstanowego. Trwałe strumienie są promowane tylko wtedy, gdy serwer ma pracę do wysłania, a następnie zwalniane. Bezczynne agenci zużywają zero zasobów strumienia.
Odporność oceny
Błąd renderowania szablonu lub błąd parsowania when: w jednym zasobie pomija ten zasób i kontynuuje resztę przebiegu konwergencji. Jeden zły zasób nie przerywa całej zasady.
Zero operacji bazodanowych na gorącej ścieżce
FleetIndex jest w pełni w pamięci z asynchronicznym opróżnianiem brudnego zestawu. Sprawdzenie agenta — wyszukiwanie, kompilacja zasad i odpowiedź — nie dotyka żadnych zapytań do bazy danych.
Agent nigdy nie kończy przy przejściowych błędach
Serwer nieosiągalny, błąd uzgadniania TLS, zniekształcona odpowiedź, awaria oceny zasad — wszystko obsługiwane z wycofaniem i ponowieniem. Binarium agenta, raz uruchomione, działa do czasu jawnego zatrzymania.
Przeładowanie z graceful fallback
Publikacja konfiguracji waliduje, synchronizuje i przeładowuje. Jeśli nowa konfiguracja nie przejdzie walidacji, serwer zachowuje poprzednią działającą konfigurację. Bez przestojów, bez stanu częściowego.
Zdalny dostęp przez przeglądarkę i CLI (Scrier)
Terminale SSH, pulpity RDP i podgląd aktywnej sesji z interfejsu webowego — lub vigocli scrier ssh z terminala przez ten sam tunel. Bez VPN, bez bastionu, bez przekierowywania portów. Tuneluje przez istniejące połączenie mTLS agenta. Efemeryczne klucze na sesję. Tryb podglądu/pomocy pozwala help deskowi zobaczyć i kontrolować aktywny pulpit użytkownika za zgodą.
Tryb obserwacji dla bezpiecznej migracji
Uruchom Vigo obok istniejącego CM. Agenci raportują, co zmieniłyby, nic nie stosując. Przejdź, gdy będziesz pewny. Per węzeł lub dla całej floty.
📈 Skalowalność
Dziesiątki tysięcy envoys na serwer
Na jednej maszynie 8 vCPU / 32 GB, zmierzono na żywo — ~7 450 envoys przy domyślnym interwale jednej sekundy, ~30 000 przy wydłużonym interwale. To Ty ustawiasz interwał; pojemność skaluje się liniowo z rdzeniami i RAM. Bez compile masters, puli roboczych, klastrów bazodanowych. Zobacz analizę →
Mikrosekundowa gorąca ścieżka
Gorąca praca per sprawdzenie to ~53 µs weryfikacja podpisu ED25519 (zmierzona); sprawdzenie znacznika czasu, wyszukiwanie indeksu i porównanie hasha zajmują każde poniżej mikrosekundy. Bez kompilacji katalogu, bez interpretacji Ruby, zero zapytań do bazy danych na gorącej ścieżce — dlatego interwał jednej sekundy najpierw obciąża CPU, a wydłużony — pamięć.
Liniowy, zmierzony koszt pamięci
~220 KB na połączony envoy dla utrzymywanego strumienia, ~623 KB łącznie po zapisaniu jego inwentarza w pamięci podręcznej — zmierzono na żywo, idealnie liniowo z RAM. Małe floty działają wygodnie na Raspberry Pi.
Brak zewnętrznej bazy danych
SQLite w trybie WAL. Brak klastra PostgreSQL do aprowizacji, dostrajania, tworzenia kopii zapasowych, uaktualniania lub utrzymywania przy życiu o 3 w nocy. Baza danych to jeden plik, który możesz skopiować poleceniem cp.
Protokół strumieniowania delta
Po pierwszym sprawdzeniu agenci wysyłają tylko to, co się zmieniło — delty cech, zakończenia uruchomień, sygnały heartbeat. Bez zbędnych transferów pełnego stanu przy każdym cyklu.
Federacja peer (spanner) dla wielu regionów
Gdy jeden serwer nie wystarczy, spanner rozszerza rejestrację, zapytania i zadania na serwery peer z równymi prawami zapisu. Każdy peer zarządza własną partycją floty i agreguje wyniki od pozostałych. Bez współdzielonej bazy danych.
💰 Cena
Za darmo do 100 węzłów. Bez limitu czasu.*
Bez karty kredytowej, bez blokad funkcji. Każda możliwość — orkiestracja, przepływy pracy, zapytania, natywne integracje, eksport zgodności, asystent AI — jest dostępna na każdym poziomie.
Brak funkcji wyłącznie dla firm
Nie ma "wersji Enterprise" z zatrzymanymi krytycznymi funkcjami. RBAC, OIDC, tokeny API, eksport zgodności, spanner — wszystko w zestawie. Poziom bezpłatny to pełny produkt.
Koszty infrastruktury: bliskie zeru
Jeden proces, jeden plik SQLite, ~6 GB RAM przy 10 000 envoys. Bez klastra PostgreSQL, bez Redis, bez kolejki komunikatów, bez floty compile master. Serwer, na którym działa Twój monitoring, może też uruchomić Vigo.
Brak licencjonowania per węzeł agenta
Binarium agenta jest swobodnie dystrybuowalne. Płacisz za liczbę węzłów po stronie serwera, nie per instalację agenta. Wycofaj i ponownie zarejestruj bez rotacji licencji.
Proste ceny per węzeł
$144 za węzeł rocznie przy 101 węzłach, spadając do $96 za węzeł rocznie przy skali. Rabaty ilościowe są automatyczne. Nie są wymagane rozmowy sprzedażowe do 5 000+ węzłów.
Najniższy całkowity koszt posiadania
Licencja to jedyny znaczący koszt. Bez compile masters, bez administratora PostgreSQL, bez dedykowanych inżynierów CM — serwer, na którym działa Twój monitoring, może też uruchomić Vigo.
Zobacz, jak wypada w porównaniu
Szczegółowe porównanie z uznawanymi narzędziami zarządzania konfiguracją i przewodniki migracji.
* Poziom bezpłatny jest dostarczany W STANIE TAKIM, W JAKIM JEST, bez zobowiązań do wsparcia. Zob. Warunki handlowe.