Znalostní Báze

Informace o sdružení vpsFree.cz, návody a nejčastější dotazy.

Uživatelské nástroje

Nástroje pro tento web


navody:vps:vpsadminos:nixops

nixops

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.

Příklad

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.

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.

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.

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.

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.

nixops create -d none network.nix network-none.nix
nixops deploy -d none --include hello

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.

Dumb backend je dostupný ve vpsFree forku nixops

nixops create -d dumb network.nix network-dumb.nix
nixops deploy -d dumb

FAQ

- preco musim opakovat -d /o\
- pinning (see activation)
- ruzne verze nixpkgs
- ct.nix

Uživatelské konfigurace

vpsFree fork

Pro instalaci stačí uložit následující config 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
  ];
}

vpsFree fork (libvirt verze)

Tato verze je určena pro běh nixops v kontejneru, ve kterém zároveň běží libvirt. libvirt je nutno nakonfigurovat se statickou síti a vlastním bridge + DHCP, se kterým nefunguje oficiální verze nixops. Tato verze přidává podporu pro qemu-agent a zjišťuje IP z bežícího virtuálního stroje.

Příklad konfigurace libvirt:

Pro správné fungování libvirtd je potřebné pro VPS zapnout KVM a TUN features.

Pro instalaci stačí uložit následující config 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
  ];
}
navody/vps/vpsadminos/nixops.txt · Poslední úprava: 2018/09/03 20:14 autor: Aither