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í:
environment.systemPackages = with pkgs; [ nixops ];
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
.
Začneme naklonováním repozitáře se vzorovým deploymentem:
git clone https://github.com/vpsfreecz/example-nixops-deployment/
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
.
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.
nixops create -d virt network.nix network-libvirt.nix nixops deploy -d virt
Nyní zbýva zjistit IP adresu stroje hello
pomocí
nixops info -d virt
a otestovat nově nahozený webserver pomocí curl IP
.
Deployment je možné měnit a znovu re-deploynout pomocí nixops deploy
.
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
.
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.
nixops create -d none network.nix network-none.nix nixops deploy -d none --include hello
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.
nixops create -d dumb network.nix network-dumb.nix nixops deploy -d dumb
- preco musim opakovat -d /o\ - pinning (see activation) - ruzne verze nixpkgs - ct.nix