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äli | Tüüp | Kohustuslik / vaikimisi | Tähendus |
|---|---|---|---|
name | string | Kohustuslik; 3–100 märki | Stabiilne sisemine retsepti nimi |
display_name | string või null | Valikuline; 1–100 märki | Inimestele nähtav nimi |
description | string | "" | Kavandatud tulemus ja piir |
base_image | string | debian-trixie | Jaotus / build siht; kasuta praegust konsooliloendit |
task | string või null | Valikuline | Operatiivne eesmärk |
executor | string või null | Valikuline | Tehnoloogia, mis ülesande täidab |
use_case | string | General | Peamine kasutusjuht |
hardware | object | Vaikimisi allpool | Juurutamise nõuded |
os | object | Tühi / vaikimisi objekt | OS paketid, kasutajad, teenused, turvalisus, töölaud, installer ja skriptid |
scenarios | array | [] | Testi topoloogiad ja eesmärgid |
publish_to | string array | ["local"] | Soovitud väljundsihtkohad |
delivery | object | {} | Lisaks deklareeritud delivery seadistus |
community | boolean | false | Taotle 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äli | Tüüp | Otstarve |
|---|---|---|
features | string array | Registreeritud funktsioonimoodulid |
packages | string array | Taotletavad kohalikud paketid |
excluded_packages | string array | Paketid, mis peavad pärast funktsioonide laiendamist puuduma |
custom_packages | array | Allikarepositooriumid, pakendamine toetatud build teel |
package_overrides | array | Selged lisamise, eemaldamise või asendamise toimingud |
extra_repos | string array | Lisarepositooriumid; usalduse ja võtmete haldus vajab endiselt ülevaatust |
services | array | Nimeliste teenuste lubamine ja seadistus |
users | array | Image’i kohalikud kontod ja grupid |
security | object | Deklareeritud hardening, krüptimine, audit, SELinux ja fail2ban valikud |
networking | object | Liideste ja võrgu kavatsus |
desktop_settings | object | Töölaua välimus ja käitumine |
branding | object | Jaotuse identiteet ja varad |
runtime | object | Init / teenuste / pakihalduri identiteet |
boot | object | Tuumaargumendid ja GRUB valikud |
installer | object | Kettale installimise seadistus |
persistence | object | Live persistence ja tsoonipoliitika |
integrity | object | Taotletud dm-verity, Secure Boot ja IMA/EVM seaded |
file_attachments | array | Varem üles laaditud failid, tuvastatud file_id järgi |
startup_scripts | array | Piiratud systemd ühekordsed skriptid |
time_zone | string või null | Image’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
- Valideeri JSON praeguse retseptiredaktori, API või MCP tööriista
validate_recipekaudu. - Võrdle tagastatud normaliseeritud retsepti algse päringuga.
- Kohtle välja jäetud tundmatuid välju retsepti defektina, mitte eduka seadistusena.
- Build alusta alles siis, kui selged nõuded on kajastatud.
- Vaata üle genereeritud tõendid ja käivita assertions tulemusliku külalise vastu.
Vaata Your First Build tõrgete ja allalaadimise taastamise juhiseid.