Funcții de build
Un feature este un modul de build denumit. Intrarea din registru poate declara pachete pentru una sau mai multe familii de distribuții și poate include build hooks, aliasuri, metadate capability și guest assertions.
Adăugarea unui feature exprimă intenția. Nu dovedește, de una singură, că fiecare pachet a fost disponibil, că fiecare hook a rulat sau că comportamentul rezultat funcționează pe image-ul țintă. Validarea rețetei, finalizarea buildului și verificarea guest sunt porți separate.
Găsiți setul curent de feature
Folosiți feature selector sau feature-catalog API în versiunea OpenFactory implementată. Acea ieșire este autoritară pentru versiunea care rulează. Listele statice devin rapid depășite, iar unele intrări din registru sunt ascunse pentru că susțin fixtures interne sau integrări incomplete.
Înainte de a alege un feature, verificați:
- dacă este vizibil și activat pentru contul dvs.;
- dacă declară pachete pentru familia de distribuție a rețetei;
- dacă sursele externe sunt fixate și pot fi preluate;
- dacă are assertions care dovedesc comportamentul de care aveți nevoie; și
- dacă intră în conflict cu alt modul solicitat.
Categorii reprezentative
Registrul include în prezent module în categorii precum:
| Categorie | Exemple | Dovadă de cerut |
|---|---|---|
| Desktop | desktop-kde, desktop-gnome-minimal, krita, kdenlive | tip de sesiune, pachete instalate, comportament launcher și un desktop smoke test real |
| Linie de comandă și dezvoltare | git, curl, python, nodejs, rust | inventar pachete/versiuni și smoke teste executable |
| Infrastructură | nginx, postgresql, redis, docker, ansible | configurare serviciu, stare enabled/running, porturi și health la nivel de aplicație |
| Security | firewall, audit-logging, security-hardening, apparmor | policy generată, stare runtime activă, teste negative și excepții documentate |
| Orientate spre compliance | cis-benchmarks, gxp, disa-stig, nist-800-53 | sursă exactă benchmark/control, aplicabilitate, rezultate per control și decizie umană |
| Instrumente AI | ollama, alpaca, aider, codex-cli | provenance source/package fixată, limită descărcare model, test de lansare și cerințe de resurse |
Exemplele nu formează o matrice de compatibilitate. Un nume de feature poate exista în timp ce implementarea pentru o anumită distribuție rămâne parțială.
Feature, pachet și serviciu sunt diferite
os.featuresselectează modulele de build înregistrate.os.packagescere managerului de pachete nativ pachete concrete.os.servicesfurnizează intenția de activare și configurare denumită.
De exemplu:
{
"os": {
"features": ["ssh", "firewall"],
"packages": ["curl", "jq"],
"services": [
{
"name": "ssh",
"enabled": true,
"config": {
"port": 22,
"disable_password_auth": true
}
}
]
}
}O configurație de serviciu validă poate conține în continuare o cheie pe care generatorul nu o consumă. Inspectați rețeta normalizată și testați guestul generat.
Etichete security și compliance
security-hardening instalează și configurează o baseline generală de hardening. Nu este sinonim cu un profil CIS. hardening_level din rețetă este o etichetă de configurare interpretată de generatoare specifice țintei; nu este o certificare și nici o mapare universală la CIS Level 1 sau Level 2.
Feature-ul cis-benchmarks are o cale de remediation mai specifică pentru Ubuntu 24.04 Level 1. Alte base image nu primesc același rol. Limita exactă este descrisă în CIS benchmark evidence.
La fel, activarea unui feature denumit pentru GxP, HIPAA, SOC 2, PCI DSS, NIST sau DISA nu stabilește compliance organizațional. Poate adăuga pachete, configurare și teste care contribuie la dovezi pentru o evaluare guvernată separat.
Combinarea feature în siguranță
- Începeți cu cel mai mic set care exprimă comportamentul solicitat.
- Validați rețeta și inspectați ieșirea normalizată pentru câmpuri eliminate sau inferate.
- Examinați planul extins de pachete și hook-uri.
- Rulați buildul o dată și urmăriți build ID-ul său durabil.
- Rulați assertions specifice feature în guest pornit.
- Înregistrați explicit eșecurile și excepțiile intenționate.
- Adăugați alt feature doar după ce înțelegeți baseline-ul curent.
Forma JSON canonică este descrisă în Recipe Schema.