Toto je starší verze dokumentu!
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 taky jejich mixovaní. Tenhle návod dále obsahujě popis
použití libvirt
backendu pro rychlý deploy do qemu
pomocí libvirtd
a none
backendu pro deploy vopřed připravených instancí přes SSH
.
Začneme vyklonová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ý su bude skládat z network.nix
(logická konfigurace) a network-libvirt.nix
(fyzická konfigurace, specifická pro libvirt
).
Takto vytvořenej deployment můžeme nasadit pomocí přikazu deploy
. Deploy v případě libvirt
backendu vyrobí definované virtualní stroje a nahrá 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ý žádne stroje nevytváří ale používa 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 potrebné 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 z 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ě ako none
backend funguje po SSH ale nevytváří páry klíčů pro stroje. Místo toho používá standardnou konfiguraci SSH přes ~/.ssh/config
kde je možné vybrat správný SSH klíč pro použití pro deploy. V případě nastavěných SSH klíčů ve vpsAdminu
tak není potřebný 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
Pro instalaci stačí uložit následující konfig do /etc/nixos
například pod názvem vpsfreeNixops.nix
a použít import ./vpsfreeNixops.nix
.
{ config, lib, pkgs, ... }: let nixopsRepo = pkgs.fetchFromGitHub { owner = "vpsfreecz"; repo = "nixops"; rev = "510485dee43cc959eb758ce61b38fc94c3e9a29e"; sha256 = "1sn4j3wyz5y1s0nnk5ahwym3qppqm03ygd78cixwdbic0kij6p1i"; }; in { nixpkgs.overlays = [ (self: super: { nixops = (import "${nixopsRepo}/release.nix" {}).build.x86_64-linux; } ) ]; environment.systemPackages = with pkgs; [ screen nixops git ]; }
Tato verze je určena pro běh nixops v kontejneru, v kterém zaroveň běží libvirt
. libvirt
je nutno nakonfigurovat se statickou síti a vlastným bridge + DHCP, se kterým nefunguje oficialní verze nixops
. Tato verze přidáva podporu pro qemu-agent
a zjištuje IP z bežícího virtualního stroje.
Příklad konfigurace libvirt
:
libvirtd
je potrebné pro VPS zapnout KVM a TUN features.
Pro instalaci stačí uložit následující konfig do /etc/nixos
například pod názvem vpsfreeNixops.nix
a použít import ./vpsfreeNixops.nix
.
{ config, lib, pkgs, ... }: let nixopsRepo = pkgs.fetchFromGitHub { owner = "vpsfreecz"; repo = "nixops"; rev = "668a0f9de10c04dbb7df8c1e4f2be7b064834432"; sha256 = "05ahx1snrddb715r1pdbjk1ywfqa829c6wys9icawxygh2ngspki"; }; in { nixpkgs.overlays = [ (self: super: { nixops = (import "${nixopsRepo}/release.nix" {}).build.x86_64-linux; } ) ]; environment.systemPackages = with pkgs; [ screen nixops git ]; }