Uživatelské nástroje

Nástroje pro tento web


navody:vps:vpsadminos:nixops

Toto je starší verze dokumentu!


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 taky ich 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.

Příklad

Začneme vyklonováním repozitáře se vzorovým deploymentem:

git clone https://gitub.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ý 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.

none backend

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.

None backend při prvním spustení 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 backend

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.

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

vpsFree fork

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
  ];
}

vpsFree fork (libvirt verze)

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:

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
  ];
}
navody/vps/vpsadminos/nixops.1535995954.txt.gz · Poslední úprava: 2018/09/03 19:32 autor: rmarko