Skip to Content
ReferenceRetsepti skeem

Retsepti skeem

OpenFactory retseptid kasutavad snake_case JSON-i. Kanoniline vorm sisaldab väikest ülemise taseme ümbrist, os objekti operatsioonisüsteemi seadistuseks ja scenarios massiivi kontrolliks pärast buildi.

Valideerimine tõestab, et tuvastatud väljadel on sobivad kujud. See ei tõesta, et iga pakett on olemas, et iga soovitud käitumine on kajastatud või et image ja testid õnnestuvad. Tundmatuid välju võidakse tagasiühilduvuse huvides ignoreerida, seega vaata alati toote tagastatud normaliseeritud retsepti.

Kanoniline ümbris

{ "name": "debian-web-check", "display_name": "Debian Web Check", "description": "Small Debian image with explicit smoke tests.", "base_image": "debian-trixie", "use_case": "Server evaluation", "hardware": {}, "os": {}, "scenarios": [], "publish_to": ["local"] }

Ära kasuta camelCase välju nagu baseImage või startupScripts. Ühilduvuse validaator aktsepteerib mõningaid vanemaid tasaseid retsepte, kuid normaliseeritud väljund pesastab OS väljad os alla. Uued integratsioonid peaksid saatma kanonilise vormi.

Ülemise taseme väljad

VäliTüüpKohustuslik / vaikimisiTähendus
namestringKohustuslik; 3–100 märkiStabiilne sisemine retsepti nimi
display_namestring või nullValikuline; 1–100 märkiInimestele nähtav nimi
descriptionstring""Kavandatud tulemus ja piir
base_imagestringdebian-trixieJaotus / build siht; kasuta praegust konsooliloendit
taskstring või nullValikulineOperatiivne eesmärk
executorstring või nullValikulineTehnoloogia, mis ülesande täidab
use_casestringGeneralPeamine kasutusjuht
hardwareobjectVaikimisi allpoolJuurutamise nõuded
osobjectTühi / vaikimisi objektOS paketid, kasutajad, teenused, turvalisus, töölaud, installer ja skriptid
scenariosarray[]Testi topoloogiad ja eesmärgid
publish_tostring array["local"]Soovitud väljundsihtkohad
deliveryobject{}Lisaks deklareeritud delivery seadistus
communitybooleanfalseTaotle nähtavust community marketplace’is; avaldamispoliitika kehtib endiselt

Täiustatud sihtspetsiifilised väljad on allika ISO remasterdamiseks, Proxmox külalise payload’ide, policy päritolu ja delivery integratsioonide jaoks. Kasuta redaktorit või API lepingut juurutatud versioonist, mitte ära kopeeri vana näidet.

Hardware

{ "hardware": { "platform": "pc", "architecture": "x86_64", "gpu": null, "min_cpu_cores": 2, "min_memory_gb": 4, "min_storage_gb": 16, "nic_count": 1 } }

platform on pc, phone või raspberry_pi; toetatud seadme väärtused on sihtspetsiifilised. architecture on x86_64 või aarch64. GPU väärtused nimetavad toetatud tarnijat või kombinatsiooni. Need on deklareeritud nõuded, mitte tõend, et tulemuslik image testiti sobival füüsilisel riistvaral.

OS objekt

Levinud os väljad:

VäliTüüpOtstarve
featuresstring arrayRegistreeritud funktsioonimoodulid
packagesstring arrayTaotletavad kohalikud paketid
excluded_packagesstring arrayPaketid, mis peavad pärast funktsioonide laiendamist puuduma
custom_packagesarrayAllikarepositooriumid, pakendamine toetatud build teel
package_overridesarraySelged lisamise, eemaldamise või asendamise toimingud
extra_reposstring arrayLisarepositooriumid; usalduse ja võtmete haldus vajab endiselt ülevaatust
servicesarrayNimeliste teenuste lubamine ja seadistus
usersarrayImage’i kohalikud kontod ja grupid
securityobjectDeklareeritud hardening, krüptimine, audit, SELinux ja fail2ban valikud
networkingobjectLiideste ja võrgu kavatsus
desktop_settingsobjectTöölaua välimus ja käitumine
brandingobjectJaotuse identiteet ja varad
runtimeobjectInit / teenuste / pakihalduri identiteet
bootobjectTuumaargumendid ja GRUB valikud
installerobjectKettale installimise seadistus
persistenceobjectLive persistence ja tsoonipoliitika
integrityobjectTaotletud dm-verity, Secure Boot ja IMA/EVM seaded
file_attachmentsarrayVarem üles laaditud failid, tuvastatud file_id järgi
startup_scriptsarrayPiiratud systemd ühekordsed skriptid
time_zonestring või nullImage’i ajavööndi seade

Integrity või security välja olemasolu on seadistuse kavatsus. See ei ole tõend, et mehhanism loodi, runtime’is jõustati või kvalifitseeriti vastavusrežiimiks. Nõua vastavaid build ja test tõendeid.

Users

{ "os": { "users": [ { "username": "deploy", "full_name": "Deployment Operator", "groups": ["sudo"], "shell": "/bin/bash" } ] } }

Kasutaja- ja grupinimed on piiratud turvaliste Linuxi konto märkide ja pikkusega. Kui password on seadmata, luuakse parooliga lukustatud konto ainult võtmete või juurutamise ajal credentials’ide jaoks. Väldi credentials’e salvestatud retseptides lainatekstina.

Services

{ "os": { "services": [ { "name": "ssh", "enabled": true, "config": { "port": 22, "disable_password_auth": true } } ] } }

config on teenusepõhine. Süntaktiliselt kehtiv võti võib siiski jääda ignoreerituks generaatori poolt, mis seda ei implementeeri. Kontrolli normaliseeritud retsepti, genereeritud seadistust ja külalise käitumist.

Security and Installer

{ "os": { "security": { "hardening_level": "standard", "disk_encryption": false, "audit_logging": true, "selinux": false, "fail2ban": true }, "installer": { "enabled": false, "type": "calamares", "desktop_launcher": true, "bootloader": "grub", "delivery": [], "user_setup": "build_time" } } }

Installer tüübid sõltuvad sihtobjektist (calamares, anaconda või elster-mobile). Installeri lubamine peab olema järgnevalt ühekordse ketta installitestiga; ikoon live töölaual ei tõesta, et installimine töötab.

Startup Scripts

{ "os": { "startup_scripts": [ { "name": "write-build-marker", "description": "Create a local marker after networking is available.", "command": "install -m 0644 /dev/null /var/lib/example-ready", "packages": [], "run_as": "root", "after": "network.target" } ] } }

Aktsepteeritakse kuni 32 startup_scripts. Käsud peavad olema mittetühjad ega tohi sisaldada NUL baite. Kohtle neid root-taseme shell koodina, välja arvatud kui run_as ütleb teisiti; vaata üle idempotentsus, jutumärgid, võrgutõrked ja saladuste paljastamine.

Scenarios and Assertions

{ "scenarios": [ { "id": "primary-smoke", "name": "Primary image smoke test", "enabled": true, "tests": ["boot", "login", "packages"], "custom_tests": [ { "description": "Confirm SSH is enabled on the configured port.", "assertions": [ { "type": "service_enabled", "description": "The SSH service starts at boot.", "params": {"service": "ssh"} }, { "type": "port_listening", "description": "The guest listens on TCP port 22.", "params": {"port": 22} } ] } ] } ] }

Stsenaarium võib defineerida ka topology VM-ide ja võrkudega, benchmark vormingu teste ja CIS seadeid. Puuduv topoloogia vaikimisi kasutab tavalist ühe VM teed. Assertions vajavad inimloetavat kirjelduse ja tüübispetsiifilisi params. Tundmatud assertion tüübid võivad skeemi parsimise üle elada, seega enne tõendina kasutamist kinnita runneri tugi.

Täielik minimaalne näide

{ "name": "debian-web-check", "display_name": "Debian Web Check", "description": "Debian image with SSH, curl, and explicit smoke tests.", "base_image": "debian-trixie", "use_case": "Server evaluation", "hardware": { "platform": "pc", "architecture": "x86_64", "min_cpu_cores": 2, "min_memory_gb": 4, "min_storage_gb": 16, "nic_count": 1 }, "os": { "features": ["ssh"], "packages": ["curl"], "users": [ { "username": "deploy", "groups": ["sudo"], "shell": "/bin/bash" } ], "services": [ { "name": "ssh", "enabled": true, "config": {"port": 22, "disable_password_auth": true} } ], "security": { "hardening_level": "standard", "audit_logging": true }, "installer": {"enabled": false} }, "scenarios": [ { "id": "primary-smoke", "name": "Primary image smoke test", "enabled": true, "tests": ["boot", "login", "packages"] } ], "publish_to": ["local"] }

Valideerimise töövoog

  1. Valideeri JSON praeguse retseptiredaktori, API või MCP tööriista validate_recipe kaudu.
  2. Võrdle tagastatud normaliseeritud retsepti algse päringuga.
  3. Kohtle välja jäetud tundmatuid välju retsepti defektina, mitte eduka seadistusena.
  4. Build alusta alles siis, kui selged nõuded on kajastatud.
  5. Vaata üle genereeritud tõendid ja käivita assertions tulemusliku külalise vastu.

Vaata Your First Build tõrgete ja allalaadimise taastamise juhiseid.