| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze |
| navody:vps:vpsadminos:nixops [2020/11/30 20:04] – [Uživatelské konfigurace] removed 404 link Aither | navody:vps:vpsadminos:nixops [2025/03/24 20:08] (aktuální) – smazano aither |
|---|
| ====== nixops ====== | |
| |
| * nixops manual https://nixos.org/nixops/manual/ | |
| * příklad deploymentu https://github.com/vpsfreecz/example-nixops-deployment/ | |
| |
| Pro konfiguraci kontejnerů běžících na vpsFree je také možné použít nástroj nixops. nixops rozšiřuje možnosti deklarativní konfigurace NixOS pro deploy clusteru NixOS mašin. | |
| |
| ''nixops'' je možné nainstalovat mezi systemové balíky pomocí: | |
| |
| <code> | |
| environment.systemPackages = with pkgs; [ | |
| nixops | |
| ]; | |
| </code> | |
| |
| nebo do uživatelského profilu pomocí ''nix-env -i nixops'' | |
| |
| Je také možné nainstalovat unstable verzi použitím ''nixopsUnstable''. | |
| |
| ''nixops'' umožňuje použití různých backendů a jejich mixovaní. Tento návod dále obsahuje popis | |
| použití ''libvirt'' backendu pro rychlý deploy do ''qemu'' pomocí ''libvirtd'' a ''none'' backendu pro deploy předem připravených VPS přes ''SSH''. | |
| |
| ===== Příklad ===== | |
| |
| Začneme naklonováním repozitáře se vzorovým deploymentem: | |
| |
| <code> | |
| git clone https://github.com/vpsfreecz/example-nixops-deployment/ | |
| </code> | |
| |
| Deployment v ''network.nix'' definuje dva stroje s názvy ''hello'' a ''world'', které použivají ''include'' pro import konfigurace z adresáře ''machines''. Konfigurace ''machines/hello.nix'' ukazuje nasazení webservru ''nginx'' a konfigurace ''machines/world.nix'' zapnutí ''PostgreSQL''. | |
| |
| ==== libvirt backend ==== | |
| |
| Vzorový deployment je možné otestovat pomocí ''libvirt'' backendu. Pomocí ''nixops create'' vyvoříme nový deployment s názvem ''virt'', který se bude skládat z ''network.nix'' (logická konfigurace) a ''network-libvirt.nix'' (fyzická konfigurace, specifická pro ''libvirt''). | |
| |
| Takto vytvořený deployment můžeme nasadit pomocí příkazu ''deploy''. Deploy v případě ''libvirt'' backendu vyrobí definované virtuální stroje a nahraje na ně novou konfiguraci. | |
| |
| V připadě, že nespecifikujeme proměnnou prostředí ''NIXOPS_DEPLOYMENT'', je potřeba použít parametr ''-d'' a určit název deploymentu. | |
| |
| <code bash> | |
| nixops create -d virt network.nix network-libvirt.nix | |
| nixops deploy -d virt | |
| </code> | |
| |
| Nyní zbýva zjistit IP adresu stroje ''hello'' pomocí | |
| <code bash> | |
| nixops info -d virt | |
| </code> | |
| |
| a otestovat nově nahozený webserver pomocí ''curl IP''. | |
| |
| Deployment je možné měnit a znovu re-deploynout pomocí ''nixops deploy''. | |
| |
| ==== none backend ==== | |
| |
| Pro deploy fyzických strojů nebo kontejnerů je možné použít ''none'' backend, který žádné stroje nevytváří, ale používá SSH k nahrání nové konfigurace. Obdobně ako pro virtualizovaný deployment, vytvoříme nový deployment s názvem ''none'', který bude jako fyzickou část konfigurace používat ''network-none.nix''. | |
| |
| Před samotným ''deploy'' je potřebné vytvořit cílove stroje (VPSky) a změnit IP adresy v ''network-none.nix''. | |
| |
| <note> | |
| None backend při prvním spuštění ''deploy'' vygeneruje nový pár SSH klíčů a zeptá se na heslo ke stroji/VPS - přikaz ''deploy'' byl proto doplněn o ''--include hello'' aby nejdřív došlo k instalaci prvního stroje. Pokud deploy pustíme bez parametru, SSH sa zeptá na heslo ke všem strojím najednou a dojde k zahlcení konzole - pro tento případ je lepší použít "dumb" backend pospaný v nasledujíci sekci. | |
| </note> | |
| |
| <code bash> | |
| nixops create -d none network.nix network-none.nix | |
| nixops deploy -d none --include hello | |
| </code> | |
| |
| ==== dumb backend ==== | |
| |
| ''dumb'' podobně jako ''none'' backend funguje po SSH, ale nevytváří páry klíčů pro stroje. Místo toho používá standardní konfiguraci SSH přes ''~/.ssh/config'' kde je možné vybrat správný SSH klíč pro použití pro deploy. V případě nastavených SSH klíčů ve ''vpsAdminu'' tak není nutné sahat před samotným deploy na cílovy stroj. | |
| |
| <note> | |
| Dumb backend je dostupný ve [[navody:vps:vpsadminos:nixops#vpsfree_fork|vpsFree forku nixops]] | |
| </note> | |
| |
| <code bash> | |
| nixops create -d dumb network.nix network-dumb.nix | |
| nixops deploy -d dumb | |
| </code> | |
| |
| ===== FAQ ===== | |
| |
| <code bash> | |
| - preco musim opakovat -d /o\ | |
| - pinning (see activation) | |
| - ruzne verze nixpkgs | |
| - ct.nix | |
| </code> | |
| |
| ===== Uživatelské konfigurace ===== | |
| |
| * https://github.com/otevrenamesta/otevrenamesta-cz-configuration | |
| |