colibri/docs/wiki/sl/deployment.md
Sam & Claude b8d499e85c
Some checks are pending
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
docs: rename PLAN/PROPOSAL/HANDOFF/ENHANCEMENT → implementation names
7 renames (no plan/proposal/handoff/enhancement in filenames):

    CLAWDIE-INSTALLER-HANDOFF.md → CLAWDIE-INSTALLER-VALIDATION.md
    CLAWDIE-STUDIO-PROPOSAL.md   → CLAWDIE-STUDIO.md
    COLIBRI-SKILLS-PLAN.md       → COLIBRI-SKILLS.md
    FREEBSD-BUILD-LANE-HANDOFF.md→ FREEBSD-BUILD-LANE.md
    GLASSPANE-TUI-ENHANCEMENTS.md→ GLASSPANE-TUI-DESIGN.md
    MULTI-AGENT-HOST-PLAN.md     → MULTI-AGENT-HOST.md
    PLAN-WIKI-CLAWDIE-SI.md      → WIKI-CLAWDIE-SI.md

  16 cross-references updated across 10 files.
  wiki-lint --strict: PASS (146 refs, 0 failures).
2026-06-26 17:32:39 +02:00

6.4 KiB

title description
Namestitev Nameščevalnik gostitelja clawdie — odkrije ZFS, pripravi podatkovne zbirke, ustvari uporabnika storitve in namesti enoto rc.d/systemd.

kazalo

Zaboj clawdie je Colibrijev nameščevalnik gostitelja. Odkrije postavitev ZFS na napravi in pripravi storitev clawdie. Na FreeBSD to pomeni storitev rc.d, podatkovne zbirke ZFS in neprivilegiranega uporabnika. Na Linuxu lahko uporablja systemd in bodisi ZFS bodisi navadne imenike.

crates/clawdie/src/main.rs | crates/clawdie/src/plan.rsdocs/ISO-SERVICE-LAYOUT.md | docs/CLAWDIE-INSTALLER-VALIDATION.md

Odločitve

ZFS je obvezen na FreeBSD, priporočen na Linuxu

FreeBSD ne podpira postavitve z navadnimi imeniki. Če ZFS uporabniški prostor manjka, načrt takoj sporoči napako. Linux lahko pade na navadne imenike, če ni imenovan noben bazen in ZFS ni na voljo, na zahtevo pa lahko ustvari svež bazen na prostem disku.

To ustreza produkcijskemu cilju: goli FreeBSD na zrcalnem polju ZFS RAID1. Podpora za Linux omogoča razvoj in CI brez gostitelja ZFS.

Shramba je razrešena, ne nastavljena

clawdie plan razreši shrambo v tem vrstnem redu:

  1. Če je podano --pool NAME --create-pool DEVICE, ustvari ta bazen.
  2. Če je podano --pool NAME, uporabi ta obstoječi bazen.
  3. Če ni podan noben bazen in obstaja natanko en bazen, ga uporabi.
  4. Če obstaja več bazenov in noben ni imenovan, napaka.
  5. Na Linuxu brez ZFS padec na navadne imenike.

To odpravlja potrebo po ročno napisani topološki datoteki na tipičnih enobazenskih gostiteljih, hkrati pa omogoča ekspliciten nadzor, ko je potreben.

crates/clawdie/src/main.rs (pick_pool, validate_storage)

Podatkovne zbirke ločujejo stanje od dnevnikov

Ko je ZFS uporabljen, nameščevalnik ustvari:

  • <pool>/clawdie kot vsebniško podatkovno zbirko z canmount=off
  • <pool>/clawdie/db priklopljeno na /var/db/clawdie
  • <pool>/clawdie/log priklopljeno na /var/log/clawdie

Hramba podatkovne zbirke in dnevnikov v ločenih podatkovnih zbirkah omogoča, da posnetki, kvote in pravilniki vrtenja dnevnikov veljajo neodvisno.

crates/clawdie/src/plan.rs (zfs_dataset_steps)

Privzeto suhi tek

clawdie apply izpiše načrt in konča, razen če je podano --yes. discover in plan sta samo za branje. To ščiti produkcijske gostitelje pred nenamernim pripravljanjem.

crates/clawdie/src/main.rs (Cmd::Apply)

Ustvarjanje bazena je varovano pred zasedenimi diski

--create-pool na nepraznem disku je zavrnjeno, razen če je podano tudi --force. Nameščevalnik uporablja lsblk na Linuxu za zaznavanje particij, datotečnih sistemov, priklopnih točk in korenskega diska. Varovalo je konzervativno: če je disk dvoumen, ga je treba eksplicitno vsiliti.

crates/clawdie/src/disk.rs | crates/clawdie/src/main.rs (validate_create_device)

En sam neprivilegiran uporabnik storitve

Storitev teče kot _clawdie na obeh platformah. Na FreeBSD je uporabnik ustvarjen z pw useradd -s /usr/sbin/nologin -d /var/db/clawdie, izhodna koda 65 (že obstaja) pa se obravnava kot preskok. Na Linuxu se uporabi useradd --system. Imeniki stanja se nato chownajo temu uporabniku.

crates/clawdie/src/platform.rs

Upravitelji storitev, specifični za platformo, ista specifikacija

Platform je notranji trait. Izvedbi se razlikujeta samo v tem, kako namestita in omogočita enoto:

  • FreeBSD: zapiše /usr/local/etc/rc.d/clawdie, uporabi sysrc clawdie_enable=YES.
  • Linux: zapiše /etc/systemd/system/clawdie.service, zažene systemctl enable --now clawdie.

Obe uporabljata isto ServiceSpec (binarna datoteka, uporabnik, podatkovni imenik, ime storitve). Zagon apply na različnih platformah zato ustvari enako postavitev datotečnega sistema in se razlikuje samo v ovoju upravitelja storitev.

crates/clawdie/src/platform.rs (FreeBsd, Linux)

Demon teče skozi nadzornika platforme

Ustvarjeni skript rc.d za FreeBSD izvede /usr/local/bin/colibri-daemon skozi /usr/sbin/daemon -u _clawdie, tako da nadzornik ob zrušitvi ponovno zažene in proces pade na neprivilegiranega uporabnika. Enota systemd je preprosta storitev z Restart=on-failure.

Nameščevalnik sam ne zažene procesa v ozadju ali ne pripravi binarne datoteke; samo ustvari okolje. Operater ali paketna gradnja pripravi colibri-daemon in nato service clawdie start.

docs/ISO-SERVICE-LAYOUT.md (rc.d prek daemon(8))

Skrivnosti ne piše nameščevalnik

Nameščevalnik se ne dotika ključev API ponudnika. Ločena datoteka — običajno /usr/local/etc/colibri/provider — hrani skrivnosti in jo pred zagonom procesa v ozadju prebere rc.d. To ohranja domet nameščevalnika omejen na ZFS, imenike, uporabnike in datoteke storitev.

vault-provision

Koraki se izvajajo zaporedno in se ustavijo ob napaki

deploy::apply zažene vsak Step po vrsti. Koraki Run pokličejo lupino in padejo ob neničelnem izhodu, razen če korak navede dovoljene izhodne kode. Koraki WriteFile ustvarijo starševske imenike, zapišejo datoteko in jo chmodajo. Če katerikoli korak pade, se apply takoj ustavi in sporoči ukaz, ki je padel, ter stderr.

crates/clawdie/src/deploy.rs

Oblika načrta

clawdie plan
  ├── ZFS layout (ali navadni imeniki)
  │   ├── create <pool>/clawdie container
  │   ├── create <pool>/clawdie/db -> /var/db/clawdie
  │   └── create <pool>/clawdie/log -> /var/log/clawdie
  └── service install
      ├── create user _clawdie
      ├── chown state dirs
      ├── write service unit (rc.d / systemd)
      ├── enable service (sysrc / systemctl)
      └── [systemd] daemon-reload + start

Tipična namestitev FreeBSD

# odkrij
clawdie discover

# predogled
clawdie plan

# pripravi podatkovne zbirke, uporabnika in storitev rc.d
sudo clawdie apply --yes

# zaženi, ko je binarna datoteka colibri-daemon pripravljena
sudo service clawdie start

Navzkrižne povezave na izvajalne poti

Po namestitvi ima storitev te poti:

  • /var/db/clawdie/colibri.sqlite — koordinacijska shramba SQLite
  • /var/run/clawdie/clawdie.sock — Unix vtičnica procesa v ozadju
  • /var/log/clawdie/daemon.log — dnevnik stdout/stderr
  • /usr/local/etc/colibri/ — konfiguracija in skrivnosti ponudnika

store-schema | operator-cli