Skip to Content
Getting StartedΚατανόηση συνταγών

Κατανόηση συνταγών

Το BuildRecipe είναι η κανονικοποιημένη προδιαγραφή που στέλνει το OpenFactory στη διοχέτευση εικόνας. Η συνομιλία μπορεί να βοηθήσει στη σύνταξή της, αλλά η συνταγή, τα στιγμιότυπα πηγής, τα αρχεία που δημιουργούνται και τα τεκμήρια δοκιμών είναι αυτά που καθορίζουν μια κατασκευή.

Το νοητικό μοντέλο

Η κανονική συνταγή έχει τέσσερα κύρια στρώματα:

  1. Identity and target: όνομα, περιγραφή, εικόνα βάσης και πρόθεση υλικού.
  2. Operating system: χαρακτηριστικά, πακέτα, υπηρεσίες, χρήστες, ασφάλεια, επιτραπέζιος υπολογιστής, πρόγραμμα εγκατάστασης, συνημμένα και σενάρια εκκίνησης στο os.
  3. Verification: ένα ή περισσότερα σενάρια με ενσωματωμένες δοκιμές και προσαρμοσμένες δηλώσεις.
  4. Delivery intent: ζητούμενοι προορισμοί δημοσίευσης και προαιρετικές ρυθμίσεις παράδοσης.
{ "name": "debian-web-check", "display_name": "Debian Web Check", "description": "Small Debian image with explicit smoke tests.", "base_image": "debian-trixie", "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"], "services": [ { "name": "ssh", "enabled": true, "config": {"port": 22, "disable_password_auth": true} } ], "security": { "hardening_level": "standard", "audit_logging": true } }, "scenarios": [ { "id": "primary-smoke", "name": "Primary image smoke test", "enabled": true, "tests": ["boot", "login", "packages"] } ], "publish_to": ["local"] }

Χρησιμοποιήστε το snake_case. Οι νέες ενσωματώσεις δεν πρέπει να στέλνουν σχήματα παλαιού τύπου όπως baseImage, features ανώτατου επιπέδου ή startupScripts.

Τρεις έλεγχοι, τρεις διαφορετικές απαντήσεις

Επικύρωση σχήματος

Απαντήσεις επικύρωσης: “Τα αναγνωρισμένα δεδομένα έχουν αποδεκτό σχήμα;” Δεν αποδεικνύει ότι υπάρχουν πακέτα ή η συμπεριφορά λειτουργεί. Ορισμένα άγνωστα πεδία αγνοούνται για συμβατότητα, επομένως μια επιτυχία επικύρωσης μπορεί να παραλείψει ένα σημαντικό αίτημα.

Να συγκρίνετε πάντα την επιστρεφόμενη κανονικοποιημένη συνταγή με την αρχική συνομιλία και τις απαιτήσεις. Μια επιφάνεια εργασίας, εφαρμογή, πρόγραμμα εγκατάστασης, συνημμένο ή δοκιμή που λείπει είναι ελάττωμα συνταγής, ακόμα κι αν η επικύρωση λέει valid.

Δημιουργία αποδεικτικών στοιχείων

Μια επιτυχημένη κατασκευή απαντά: “Ο αγωγός παρήγαγε ένα τεχνούργημα;” Δεν αποδεικνύει ότι όλα τα προβλεπόμενα χαρακτηριστικά έγιναν στην εικόνα. Επιθεωρήστε το απόθεμα του πακέτου, την προέλευση της πηγής, τις προειδοποιήσεις και τα στοιχεία του σταδίου κατασκευής.

Επαλήθευση επισκέπτη

Οι δοκιμές επισκεπτών απαντούν σε στενές ερωτήσεις χρόνου εκτέλεσης: εάν το VM εκκινήθηκε, μια υπηρεσία είναι ενεργή, μια θύρα ακούει, ένα αρχείο έχει αναμενόμενο περιεχόμενο ή αν έχει ξεκινήσει μια εφαρμογή. Ένας παροδικός ισχυρισμός υποστηρίζει μόνο τη συμπεριφορά που πραγματικά παρατήρησε.

Οι ρυθμίσεις ασφαλείας είναι πρόθεση

Οι αποδεκτές τιμές hardening_level είναι minimal, standard και strict, αλλά αυτές οι ετικέτες δεν είναι φορητά προφίλ συμμόρφωσης. Οι γεννήτριες στόχων μπορούν να τις ερμηνεύσουν διαφορετικά. Εάν χρειάζεστε ένα σημείο αναφοράς, επιλέξτε το ακριβές ισχύον σημείο αναφοράς και διατηρήστε τα αποτελέσματα ανά έλεγχο. μην συνάγετε τη συμμόρφωση CIS από το strict.

Ομοίως, οι ρυθμίσεις disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity και εγκατάστασης απαιτούν ταιριάζουν τεχνουργήματα και δοκιμές χρόνου εκτέλεσης.

Συζήτηση και ιδιοκτησία συνταγών

Όταν επικυρώνετε ή επεξεργάζεστε μια συνταγή που έχει συνταχθεί από συνομιλία, η υπάρχουσα συνομιλία παραμένει μέρος του πλαισίου συγγραφής. Η επικύρωση θα πρέπει να βελτιώσει την τρέχουσα συνταγή και όχι να την αντικαταστήσει σιωπηλά με μια γενική προεπιλογή. Ακόμα κι έτσι, η κανονικοποιημένη συνταγή είναι το τελευταίο σημείο ελέγχου πριν από την κατασκευή.

Για κάθε απαίτηση υλικού:

  • βρείτε το αντίστοιχο κανονικοποιημένο πεδίο.
  • επιβεβαιώστε την αξία και το εύρος του στόχου.
  • Προσθέστε έναν ισχυρισμό όπου είναι δυνατή η απόδειξη χρόνου εκτέλεσης. και
  • διατηρήστε την εργασία μόνο για ανάπτυξη ως ρητή προειδοποίηση αντί να προσποιηθείτε ότι συνέβη κατά τη δημιουργία εικόνας.

Ελέγξτε τη λίστα ελέγχου

  • Είναι σωστή η εικόνα και η αρχιτεκτονική βάσης;
  • Υπάρχουν όλες οι απαιτούμενες λειτουργίες επιφάνειας εργασίας και εφαρμογής;
  • Είναι καρφιτσωμένες και αδειοδοτημένες εξωτερικές πηγές για την προβλεπόμενη χρήση;
  • Απουσιάζουν μυστικά από αποθηκευμένα πεδία συνταγών και σενάρια;
  • Έχει ρυθμιστεί και δοκιμαστεί το πρόγραμμα εγκατάστασης σε δίσκο μιας χρήσης εάν ζητηθεί;
  • Δοκιμάζουν τα σενάρια τα πραγματικά κριτήρια αποδοχής;
  • Δεν υποστηρίζονται απαιτήσεις ή απαιτήσεις χρόνου ανάπτυξης;

Ανατρέξτε στο Σχήμα συνταγής για την αναφορά πεδίου και στο Your First Build για τη ροή εργασιών κατασκευής και λήψης.