Toto je starší verze dokumentu!
GNU Guix System je distribuce, ve které se systém, služby a balíčky popisují deklarativně v jazyce Guile Scheme. Podobně jako NixOS vytváří při změnách nové generace systému, ke kterým se můžeš vrátit.
Šablona vpsFree obsahuje minimální Guix System s OpenSSH a dvěma soubory:
/etc/config/system.scm je tvoje hlavní konfigurace systému;/etc/config/vpsadminos.scm zajišťuje běh Guixu v kontejneru vpsAdminOS.
system.scm načítá modul vpsadminos z druhého souboru. Toto propojení
zachovej: definuje kontejnerový bootloader, souborové systémy a službu, která
při startu spouští síťovou konfiguraci vytvořenou vpsAdminOS. Aktuální podobu
obou souborů najdeš v
adresáři šablony pro Guix v repozitáři vpsAdminOS.
Jádro spravuje vpsAdminOS, proto do konfigurace nepřidávej vlastní linuxový kernel ani běžný bootloader pro fyzický stroj.
Nejdřív uprav /etc/config/system.scm. Můžeš změnit například hostname,
balíčky a seznam služeb. Strukturu %ct-services, %ct-file-systems a
%ct-bootloader ponech z modulu vpsadminos.
Konfiguraci aktivuj jako root:
#!/usr/bin/env bash set -eo pipefail # Použij revizi Guixu, která sestavila aktivní systémovou generaci. export GUIX_PROFILE=/run/current-system/profile # shellcheck disable=SC1091 . "$GUIX_PROFILE/etc/profile" hash guix test -r /etc/config/system.scm test -r /etc/config/vpsadminos.scm test -r /run/current-system/channels.scm guix time-machine -C /run/current-system/channels.scm -- \ system reconfigure -L /etc/config /etc/config/system.scm
guix time-machine použije kanály zaznamenané v aktivní generaci, takže
reconfigure nezávisí na pozdějších změnách historie kanálů. Přepínač
-L /etc/config zpřístupní modul vpsadminos. Příkaz sestaví a rovnou
aktivuje novou generaci. Před odhlášením ověř, že běží SSH a služby, které
potřebuješ. Podrobnosti popisují manuály k
guix time-machine
a guix system.
Ukázka výše vybere revizi Guixu a kanály, které sestavily právě aktivní
systémovou generaci. Reconfigure proto nevyžaduje před každou změnou
guix pull a opakované nasazení zůstává předvídatelné.
Když chceš Guix záměrně aktualizovat, nejdřív si pomocí guix describe
zaznamenej současné kanály. Potom spusť guix pull, načti aktualizovaný profil
podle pokynů příkazu a znovu proveď reconfigure. Před změnou si přečti novinky a
počítej s tím, že sestavení může trvat déle a potřebovat více paměti a místa.
Práci s kanály a připnutými revizemi vysvětluje
manuál ke kanálům.
Síť nenastavuj pomocí static-networking-service-type. vpsAdminOS při
každém startu vytvoří /ifcfg.add podle aktuálních adres a služba
vpsadminos-networking jej spustí. Vlastní síťové služby přidávej až nad
tuto vrstvu.
Výchozí šablona kvůli pohodlnému prvnímu přihlášení povoluje SSH pro root.
Po zprovoznění klíčů můžeš přihlášení zpřísnit podle návodu
SSH.
Pokud spravuješ více Guix VPS, můžeš jejich konfigurace držet na jednom
řídicím Guix systému a nasazovat je pomocí
guix deploy.
Následující úplná konfigurace je výchozí bod pro jednu VPS. Ty spravuješ jen
deploy.scm; kontejnerové detaily se dál načítají z udržovaného modulu
/etc/config/vpsadminos.scm.
Na řídicím systému potřebuješ SSH klíč
/root/.ssh/id_ed25519 a jeho veřejnou část musíš před prvním nasazením
přidat uživateli root na cílové VPS. Přihlášení klíčem nejdřív vyzkoušej.
Na cílové VPS spusť cat /etc/ssh/ssh_host_ed25519_key.pub a otisk získaného
klíče ověř podle návodu pro SSH. Do konfigurace patří celý
řádek začínající ssh-ed25519, ne jen otisk.
Ulož tuto konfiguraci jako /etc/config/deploy.scm na řídicím systému a
nahraď adresu a hostitelský klíč cílové VPS:
;; Načti udržovanou integraci kontejnerů vpsAdminOS. (add-to-load-path "/etc/config") (use-modules (vpsadminos) (gnu) (gnu machine) (gnu machine ssh) (gnu services base)) (use-package-modules nss ssh) (use-service-modules ssh) ;; Tyto soubory se nacházejí na stroji, ze kterého spouštíš guix deploy. (define %controller-signing-key (local-file "/etc/guix/signing-key.pub")) (define %root-ssh-key (local-file "/root/.ssh/id_ed25519.pub")) (define %system (operating-system (host-name "guix-target") (timezone "Etc/UTC") (locale "en_US.utf8") (firmware '()) (initrd-modules '()) (kernel %ct-dummy-kernel) (packages (cons* nss-certs %base-packages)) (essential-services (modify-services (operating-system-default-essential-services this-operating-system) (delete firmware-service-type) (delete (service-kind %linux-bare-metal-service)))) (bootloader %ct-bootloader) (file-systems %ct-file-systems) (services (cons* (service openssh-service-type (openssh-configuration (openssh openssh-sans-x) (permit-root-login 'prohibit-password) (password-authentication? #f) (authorized-keys `(("root" ,%root-ssh-key))))) (simple-service 'controller-signing-key guix-service-type (guix-extension (authorized-keys (list %controller-signing-key)))) %ct-services)))) (define %machine (machine (operating-system %system) (environment managed-host-environment-type) (configuration (machine-ssh-configuration ;; Nahraď adresu a hostitelský klíč údaji cílové VPS. (host-name "192.0.2.3") (system "x86_64-linux") (user "root") (identity "/root/.ssh/id_ed25519") (host-key "ssh-ed25519 REPLACE_WITH_TARGET_HOST_KEY") (authorize? #t) (allow-downgrades? #f) ;; vpsAdminOS poskytuje jádro a používá zástupný kořen /dev/null. ;; Guix proto nemůže provést kontroly souborového systému a initrd určené pro fyzický stroj. (safety-checks? #f))))) (list %machine)
Nejdřív konfiguraci načti bez nasazení příkazem guix time-machine -C
/run/current-system/channels.scm – deploy -L /etc/config
/etc/config/deploy.scm –dry-run. Potom spusť stejný příkaz bez
–dry-run. První nasazení automaticky autorizuje podpisový klíč řídicího
systému na cíli a deklarace jej zachová i v nové generaci.
Konfigurace úmyslně povoluje pro root jen přihlášení klíčem a ověřuje
hostitelský klíč cíle. Nastavení safety-checks? #f vypíná kontroly fyzických
souborových systémů a modulů initrd, které v kontejneru nedávají smysl:
vpsAdminOS poskytuje jádro a integrační modul používá pomocný kořenový systém
/dev/null, který současný Guix neumí zkontrolovat. Ochrana před downgradem
zůstává zapnutá. Pokud nasazení selže, oprav jeho příčinu místo povolení
allow-downgrades?.
Generace zobrazíš příkazem guix system list-generations. Před odstraněním
starých generací ověř, že je nový systém funkční. Příkazy pro návrat a práci
s generacemi popisuje
manuál Guixu.
Pokud nová konfigurace nenaběhne nebo ztratíš SSH, postupuj podle návodu pro vzdálenou konzoli. Obnovení starší generace Guixu popisuje návod ke start menu vpsAdminOS. Konfiguraci pak oprav a znovu spusť reconfigure.