Εκμάθηση μαριονέτας για αρχάριους: Τι είναι το Puppet & Πώς να το χρησιμοποιήσετε;
Πριν μάθουμε το Puppet, ας καταλάβουμε:
Τι είναι η Διαχείριση Διαμόρφωσης;
Η διαχείριση διαμόρφωσης είναι η διαδικασία διατήρησης λογισμικού και συστημάτων υπολογιστών (για παράδειγμα διακομιστές, αποθήκευση, δίκτυα) σε γνωστή, επιθυμητή και συνεπή κατάσταση. Επιτρέπει επίσης την πρόσβαση σε ένα ακριβές ιστορικό αρχείο της κατάστασης του συστήματος για σκοπούς διαχείρισης έργου και ελέγχου.
Οι διαχειριστές συστήματος εκτελούν ως επί το πλείστον επαναλαμβανόμενες εργασίες όπως η εγκατάσταση διακομιστών, η διαμόρφωση αυτών των διακομιστών κ.λπ. Αυτοί οι επαγγελματίες μπορούν να αυτοματοποιήσουν αυτήν την εργασία, γράφοντας σενάρια.
Ωστόσο, είναι μια δύσκολη δουλειά όταν εργάζονται σε μια τεράστια υποδομή. Το εργαλείο διαχείρισης ρύθμισης παραμέτρων σαν μαριονέτα εισήχθη για την επίλυση τέτοιων ζητημάτων.
Τι είναι το Puppet;
μαριονέτα είναι ένα εργαλείο διαχείρισης συστήματος για τη συγκέντρωση και την αυτοματοποίηση της διαδικασίας διαχείρισης παραμέτρων. Το Puppet χρησιμοποιείται επίσης ως εργαλείο ανάπτυξης λογισμικού. Είναι ένα λογισμικό διαχείρισης διαμόρφωσης ανοιχτού κώδικα που χρησιμοποιείται ευρέως για τη διαμόρφωση, τη διαχείριση, την ανάπτυξη και την ενορχήστρωση διαφόρων εφαρμογών και υπηρεσιών σε ολόκληρη την υποδομή ενός οργανισμού.
Το Puppet είναι ειδικά σχεδιασμένο για τη διαχείριση της διαμόρφωσης του Linux και Windows συστήματα. Είναι γραμμένο σε Ruby και χρησιμοποιεί το μοναδικό του Domain Specific Lγλώσσα (DSL) για την περιγραφή της διαμόρφωσης του συστήματος.
Ποιες είναι οι εκδόσεις Puppet;
Το Puppet διατίθεται σε δύο εκδόσεις:
- Μαριονέτα ανοιχτού κώδικα: Είναι μια βασική έκδοση του εργαλείου διαχείρισης διαμόρφωσης Puppet, το οποίο είναι επίσης γνωστό ως Puppet ανοιχτού κώδικα. Διατίθεται απευθείας από τον ιστότοπο της Puppet και διαθέτει άδεια χρήσης βάσει του συστήματος Apache 2.0.
- Επιχειρήσεις Κουκλοθέατρου: Εμπορική έκδοση που προσφέρει λειτουργίες όπως αναφορές συμμόρφωσης, ενορχήστρωση, έλεγχος πρόσβασης βάσει ρόλων, GUI, API και εργαλεία γραμμής εντολών για αποτελεσματική διαχείριση κόμβων.
Τι μπορεί να κάνει το Puppet;
Για παράδειγμα, έχετε μια υποδομή με περίπου 100 διακομιστές. Ως διαχειριστής συστήματος, ο ρόλος σας είναι να διασφαλίζετε ότι όλοι αυτοί οι διακομιστές είναι πάντα ενημερωμένοι και λειτουργούν με πλήρη λειτουργικότητα.
Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το Puppet, το οποίο σας επιτρέπει να γράψετε έναν απλό κώδικα που μπορεί να αναπτυχθεί αυτόματα σε αυτούς τους διακομιστές. Αυτό μειώνει την ανθρώπινη προσπάθεια και καθιστά τη διαδικασία ανάπτυξης γρήγορη και αποτελεσματική.
Το Puppet εκτελεί τις ακόλουθες λειτουργίες:
- Το Puppet σάς επιτρέπει να ορίζετε ξεχωριστές διαμορφώσεις για κάθε κεντρικό υπολογιστή.
- Το εργαλείο σάς επιτρέπει να παρακολουθείτε συνεχώς τους διακομιστές για να επιβεβαιώσετε εάν η απαιτούμενη διαμόρφωση υπάρχει ή όχι και δεν έχει τροποποιηθεί. Εάν αλλάξει η διαμόρφωση, το εργαλείο Puppet θα επανέλθει στην προκαθορισμένη διαμόρφωση στον κεντρικό υπολογιστή.
- Παρέχει επίσης έλεγχο σε όλο το διαμορφωμένο σύστημα, έτσι μια κεντρική αλλαγή πραγματοποιείται αυτόματα.
- Χρησιμοποιείται επίσης ως εργαλείο ανάπτυξης καθώς αναπτύσσει αυτόματα λογισμικό στο σύστημα. Υλοποιεί την υποδομή ως κωδικός επειδή οι πολιτικές και οι διαμορφώσεις γράφονται ως κώδικας.
Puppet DSL και Προγραμματιστικά Παραδείγματα
Πριν μάθουμε το Puppet DSL, ας κατανοήσουμε τα παραδείγματα προγραμματισμού:
Ένα παράδειγμα προγραμματισμού είναι ένα στυλ που χρησιμοποιείτε στον προγραμματισμό υπολογιστών.
Τέσσερις τύποι παραδειγμάτων είναι:
- Επιτακτικός.
- Δηλωτικός.
- Λειτουργικό (το οποίο θεωρείται υποσύνολο αυτού του δηλωτικού παραδείγματος)
- Αντικειμενοστραφής.
Θα εστιάσουμε στο Imperative και στο Declarative.
Imperative Paradigms
Αυτό το παράδειγμα προγραμματισμού εκφράζει τη λογική ενός υπολογισμού (Τι να κάνουμε) και περιγράφει τη ροή ελέγχου του (Πώς να κάνουμε)
Παράδειγμα:
Ας υποθέσουμε ότι πηγαίνετε στο γραφείο σας, κάνετε κράτηση για ταξί και αρχίζετε να δίνετε οδηγίες βήμα προς βήμα στον οδηγό μέχρι να φτάσετε στο γραφείο. Το να προσδιορίσετε τι πρέπει να κάνετε και πώς να κάνετε είναι ένα επιβεβλημένο στυλ.
Δηλωτικά Παραδείγματα
Αυτό το παράδειγμα προγραμματισμού εκφράζει τη λογική ενός υπολογισμού (Τι να κάνουμε) χωρίς να περιγράφει τη ροή ελέγχου του (Πώς να κάνουμε)
Παράδειγμα:
Ας υποθέσουμε ότι πηγαίνετε στο γραφείο σας, κάνετε κράτηση για ταξί Uber και προσδιορίζετε τον τελικό προορισμό (Γραφείο). Το να προσδιορίσετε τι να κάνετε όχι πώς να κάνετε είναι ένα δηλωτικό στυλ.
Παράδειγμα | Τι πρέπει να κάνετε | Πώς να το κάνουμε |
---|---|---|
επιτακτικός | Ναι | Ναι |
Δηλωτικός | Ναι | Οχι |
Το Puppet χρησιμοποιεί ένα παράδειγμα δηλωτικού προγραμματισμού
Το Puppet χρησιμοποιεί μια δηλωτική προσέγγιση προγραμματισμού.
Παράδειγμα: Δημιουργήστε έναν χρήστη στο σύστημα:
Μπορεί να γίνει χρησιμοποιώντας το μοτίβο προγραμματισμού Imperative από ένα σενάριο φλοιού: Εδώ καθορίζουμε τον τρόπο δημιουργίας του χρήστη και ποιες εντολές θα χρησιμοποιηθούν στο το λειτουργικό σύστημα.
Ωστόσο, μπορεί να γίνει χρησιμοποιώντας μοτίβο δηλωτικού προγραμματισμού με λίγες μόνο γραμμές κώδικα μαριονέτας, γλώσσα ειδικής περιοχής Puppet (DSL), και να επιτευχθεί το ίδιο αποτέλεσμα.
Μοντέλα ανάπτυξης εργαλείων διαχείρισης διαμόρφωσης
Υπάρχουν δύο μοντέλα ανάπτυξης για εργαλεία διαχείρισης διαμόρφωσης :
- Μοντέλο ανάπτυξης που βασίζεται σε push: ξεκινά από έναν κύριο κόμβο.
- Μοντέλο ανάπτυξης βασισμένο σε έλξη: ξεκινά από πράκτορες.
Μοντέλο ανάπτυξης που βασίζεται σε push
Σε αυτό το μοντέλο ανάπτυξης, ο κύριος διακομιστής ωθεί τις διαμορφώσεις και το λογισμικό στους μεμονωμένους πράκτορες. Μετά την επαλήθευση μιας ασφαλούς σύνδεσης, ο κύριος εκτελεί εντολές από απόσταση στους πράκτορες. Για παράδειγμα, Πιθανό και στοίβα αλατιού.
Μοντέλο ανάπτυξης που βασίζεται σε έλξη.
Σε αυτό το μοντέλο ανάπτυξης, μεμονωμένοι διακομιστές επικοινωνούν με έναν κύριο διακομιστή, επαληθεύουν και δημιουργούν μια ασφαλή σύνδεση, πραγματοποιούν λήψη των διαμορφώσεων και του λογισμικού τους και, στη συνέχεια, διαμορφώνονται ανάλογα — για παράδειγμα, Puppet και Chef.
Πώς λειτουργεί το Puppet;
Το Puppet βασίζεται σε ένα μοντέλο ανάπτυξης Pull, όπου οι κόμβοι πράκτορα ελέγχουν τακτικά μετά από κάθε 1800 δευτερόλεπτα με τον κύριο κόμβο για να δείτε αν χρειάζεται να ενημερωθεί κάτι στον πράκτορα. Εάν κάτι χρειάζεται να ενημερωθεί, ο πράκτορας τραβάει τους απαραίτητους κωδικούς μαριονέτας από τον κύριο και εκτελεί τις απαιτούμενες ενέργειες.
Ας το εξηγήσουμε με ένα παράδειγμα:
Παράδειγμα: Master – Agent Setup:
Ο Δάσκαλος
Ένα μηχάνημα βασισμένο σε Linux με εγκατεστημένο σε αυτό λογισμικό Puppet master. Είναι υπεύθυνο για τη διατήρηση των διαμορφώσεων με τη μορφή κωδίκων μαριονέτας. Ο κύριος κόμβος μπορεί να είναι μόνο Linux.
Οι Πράκτορες
Οι μηχανές στόχου τις διαχειρίζεται μια μαριονέτα με εγκατεστημένο σε αυτές το λογισμικό πράκτορα μαριονέτας.
Ο πράκτορας μπορεί να διαμορφωθεί σε οποιοδήποτε υποστηριζόμενο λειτουργικό σύστημα, όπως το Linux ή Windows or Solaris ή Mac OS.
Η επικοινωνία μεταξύ πλοιάρχου και πράκτορα δημιουργείται μέσω ασφαλών πιστοποιητικών.
Επικοινωνία μεταξύ του Master και του Agent
Βήμα 1) Μόλις δημιουργηθεί η συνδεσιμότητα μεταξύ του πράκτορα και του πλοιάρχου, ο πράκτορας Puppet στέλνει τα δεδομένα σχετικά με την κατάστασή του στον κεντρικό διακομιστή Puppet. Αυτά ονομάζονται Γεγονότα: Αυτές οι πληροφορίες περιλαμβάνουν το όνομα κεντρικού υπολογιστή, τις λεπτομέρειες του πυρήνα, τη διεύθυνση IP, τα στοιχεία ονόματος αρχείου κ.λπ.…
Βήμα 2) Το Puppet Master χρησιμοποιεί αυτά τα δεδομένα και συντάσσει μια λίστα με τη διαμόρφωση που θα εφαρμοστεί στον πράκτορα. Αυτή η λίστα ρυθμίσεων που πρέπει να εκτελεστεί σε έναν πράκτορα είναι γνωστή ως a κατάλογος. Αυτό μπορεί να αλλάξει όπως εγκατάσταση πακέτων, αναβαθμίσεις ή αφαιρέσεις, δημιουργία συστήματος αρχείων, δημιουργία ή διαγραφή χρήστη, επανεκκίνηση διακομιστή, αλλαγές διαμόρφωσης IP κ.λπ.
Βήμα 3) Ο πράκτορας χρησιμοποιεί αυτήν τη λίστα ρυθμίσεων για να εφαρμόσει τυχόν απαιτούμενες αλλαγές διαμόρφωσης στον κόμβο.
Σε περίπτωση που δεν υπάρχουν drifts στη διαμόρφωση, ο Agent δεν πραγματοποιεί αλλαγές διαμόρφωσης και αφήνει τον κόμβο να εκτελεστεί με την ίδια διαμόρφωση.
Βήμα 4) Μόλις ολοκληρωθεί, ο κόμβος αναφέρει πίσω στο κουκλοθέατρο υποδεικνύοντας ότι η διαμόρφωση έχει εφαρμοστεί και ολοκληρωθεί.
Μαριονέτες
Το Puppet παρέχει την ευελιξία για ενσωμάτωση Αναφορών με εργαλεία τρίτων, χρησιμοποιώντας Puppet API.
Τέσσερις τύποι δομικών στοιχείων Μαριονέτας είναι
- Υποστηρικτικό υλικό
- μαθήματα
- Δηλωτικό
- ενότητες
Πόροι Μαριονέτας
Οι πόροι Puppet είναι τα δομικά στοιχεία του Puppet.
Οι πόροι είναι οι ενσωματωμένες λειτουργίες που τρέχουν στο πίσω άκρο για να εκτελέσουν τις απαιτούμενες λειτουργίες σε μαριονέτα.
Μαθήματα Κουκλοθέατρου
Ένας συνδυασμός διαφορετικών πόρων μπορεί να ομαδοποιηθεί σε μια ενιαία μονάδα που ονομάζεται κλάση.
Μανιφέστο Μαριονέτας
Το Manifest είναι ένας κατάλογος που περιέχει αρχεία μαριονέτας DSL. Αυτά τα αρχεία έχουν επέκταση .pp. Η επέκταση .pp σημαίνει πρόγραμμα μαριονέτας. Ο κώδικας μαριονέτας αποτελείται από ορισμούς ή δηλώσεις μαθημάτων μαριονέτας.
Ενότητες Μαριονέτας
Τα modules είναι μια συλλογή αρχείων και καταλόγων όπως Manifests, Class Definitions. Είναι οι επαναχρησιμοποιήσιμες και κοινοποιήσιμες μονάδες στο Puppet.
Για παράδειγμα, η MySQL μονάδα για εγκατάσταση και διαμόρφωση MySQL ή τη μονάδα Jenkins για διαχείριση Jenkins, κ.λπ.
Τύποι πόρων Μαριονέτας
Γενικά, ένα σύστημα αποτελείται από αρχεία, χρήστες, υπηρεσίες, διαδικασίες, πακέτα κ.λπ. Στο Puppet, αυτά ονομάζονται πόροι. Οι πόροι είναι τα θεμελιώδη δομικά στοιχεία
Μαριονέτα. Όλες οι επεμβάσεις σε πράκτορες μαριονέτας εκτελούνται με τη βοήθεια πόρων μαριονέτας.
Οι πόροι Puppet είναι τα έτοιμα εργαλεία που χρησιμοποιούνται για την εκτέλεση διαφόρων εργασιών και λειτουργιών σε οποιαδήποτε υποστηριζόμενη πλατφόρμα. Μπορούμε να χρησιμοποιήσουμε έναν μεμονωμένο πόρο μαριονέτας για να εκτελέσουμε μια συγκεκριμένη εργασία ή μπορούμε να χρησιμοποιήσουμε πολλούς πόρους μαριονέτας μαζί για να εκτελέσουμε ορισμένες σύνθετες διαμορφώσεις εφαρμογών.
Οι πόροι μπορούν να έχουν διαφορετικούς τύπους. Χρήσεις μαριονέτας πόροι και τύπους πόρων για να περιγράψει τη διαμόρφωση ενός συστήματος.
Υπάρχουν τρία είδη τύπων πόρων:
- Τύποι πυρήνα μαριονέτας ή ενσωματωμένοι πόροι.
- Τύποι πόρων που καθορίζονται από μαριονέτα.
- Προσαρμοσμένοι τύποι πόρων μαριονέτας.
Τύποι πυρήνα μαριονέτας ή ενσωματωμένοι πόροι
Οι βασικοί ή ενσωματωμένοι τύποι πόρων είναι οι προ-ενσωματωμένοι τύποι πόρων μαριονέτας που αποστέλλονται με λογισμικό μαριονέτας. Όλοι οι βασικοί ή ενσωματωμένοι τύποι πόρων Puppet γράφονται και συντηρούνται από την ομάδα Puppet.
Τύποι πόρων που καθορίζονται από μαριονέτα
Οι καθορισμένοι τύποι πόρων είναι μικροί τύποι πόρων γραμμένοι σε δηλωτική γλώσσα Puppet χρησιμοποιώντας έναν συνδυασμό υπαρχόντων τύπων πόρων.
Προσαρμοσμένοι τύποι πόρων μαριονέτας
Οι προσαρμοσμένοι τύποι πόρων είναι εντελώς προσαρμοσμένοι τύποι πόρων γραμμένοι σε Ruby.
Ας εξερευνήσουμε τους τύπους πόρων μαριονέτας…
Στο τερματικό, πληκτρολογήστε την ακόλουθη εντολή για να εμφανίσετε μια λίστα με σχετικές υποεντολές Puppet:
Puppet --help
Στην περίπτωσή μας, μας ενδιαφέρει η υποεντολή "πόρος” το οποίο θα χρησιμοποιήσουμε για να βρούμε τις πληροφορίες σχετικά με τους ενσωματωμένους τύπους πόρων μαριονέτας.
Στο τερματικό, πληκτρολογήστε οποιαδήποτε από τις ακόλουθες εντολές για να εμφανίσετε μια λίστα ενεργειών σχετίζεται με την υποεντολή μαριονέτα "πόρος"
Puppet help resource Puppet resource --help
Σε αυτή την περίπτωση, έχουμε το πόρος ως υποεντολή και – τύποι ως δράση.
Το Puppet έχει 49 ενσωματωμένους βασικούς τύπους πόρων.
Στο τερματικό, πληκτρολογήστε την ακόλουθη εντολή για να εμφανίσετε μια λίστα με τους διαθέσιμους ενσωματωμένους τύπους πόρων μαριονέτας:
puppet resource –types
Κάθε τύπος υποστηρίζει μια λίστα με γνωρίσματα. Αυτά τα χαρακτηριστικά παρέχουν μια λεπτομερή περιγραφή που χρησιμοποιεί το Puppet για τη διαχείριση του πόρου.
Για να μάθετε όλα τα χαρακτηριστικά που σχετίζονται με τον τύπο πόρου μαριονέτας, χρησιμοποιήστε την ακόλουθη εντολή:
puppet describe <resource type name>
Οι παράμετροι θα αναφέρουν όλα τα διαθέσιμα χαρακτηριστικά για αυτόν τον τύπο πόρου.
κούκλα περιγραφή πακέτο
Είναι δύσκολο για ένα νέο άτομο να κατανοήσει και να συσχετίσει πολλά μη διαχειριζόμενα αρχεία κώδικα μαριονέτας. Εδώ χρειαζόμαστε κάποια ομαδοποίηση για να συνδέσουμε τις λειτουργίες. Ο στόχος είναι να λυθεί ένα μόνο πρόβλημα, όπως όλες οι λειτουργίες που απαιτούνται για τη διαμόρφωση του ssh σε διακομιστή ή υπηρεσία ntp ή σε έναν πλήρη διακομιστή ιστού ή διακομιστή βάσης δεδομένων από την αρχή.
Τι είναι τα Μαθήματα Κουκλοθέατρου;
Τα μαθήματα κουκλοθέατρου είναι η συλλογή πόρων μαριονέτας ομαδοποιημένα ως ενιαία ενότητα.
Η Puppet εισήγαγε μαθήματα για να κάνει τη δομή επαναχρησιμοποιήσιμη και οργανωμένη.
Αρχικά, πρέπει να ορίσουμε μια κλάση χρησιμοποιώντας σύνταξη ορισμού κλάσης. Οι κλάσεις πρέπει να είναι μοναδικές και μπορούν να δηλωθούν μόνο μία φορά με το ίδιο όνομα:
class <class-name> { <Resource declarations> }
Παράδειγμα:
class ntpconfig { file { "/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } }
Μέχρι στιγμής έχουμε ορίσει μόνο την κλάση, αλλά δεν την έχουμε χρησιμοποιήσει πουθενά. Αυτό σημαίνει ότι αυτός ο κώδικας που έχουμε γράψει δεν θα εκτελεστεί ποτέ εκτός και αν δηλώσουμε αυτήν την κλάση αλλού.
Δήλωση τάξης
Για να χρησιμοποιήσετε μια καθορισμένη κλάση στον κώδικα, χρησιμοποιήστε το περιλαμβάνουν λέξη-κλειδί.
class ntpconfig { file { "/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } } include ntpconfig
Ας το καταλάβουμε αυτό με ένα πραγματικό σενάριο.
Επίδειξη εγκατάστασης NTP
Πρώτα, βεβαιωθείτε ότι το πακέτο NTP δεν υπάρχει ήδη στον διακομιστή, η ακόλουθη εντολή δεν θα επιστρέψει τίποτα εάν το telnet δεν υπάρχει στον διακομιστή:
rpm -qa | grep -i ntp
Όπως μπορούμε να δούμε, το πακέτο NTP υπάρχει ήδη στον διακομιστή. Ας αφαιρέσουμε το υπάρχον πακέτο NTP:
yum remove ntp
Αφού αφαιρέσετε το πακέτο, βεβαιωθείτε ότι το αρχείο ntp.conf δεν υπάρχει:
ls -lrt /etc/ntp.conf
Βεβαιωθείτε ότι η υπηρεσία ntp δεν υπάρχει εκτελώντας την ακόλουθη εντολή:
systemctl status ntp
Δημιουργήστε ένα νέο αρχείο .pp για να αποθηκεύσετε τον κώδικα. Από τη γραμμή εντολών:
vi demontp.pp
Αλλάξτε τη λειτουργία εισαγωγής πατώντας το i από το πληκτρολόγιο.
Πληκτρολογήστε τον ακόλουθο κώδικα για να δημιουργήσετε ένα νέο αρχείο:
# Class Definition class ntpconfig { # Installing NTP Package package {"ntp": ensure=> "present", } # Configuring NTP configuration file file {"/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } # Starting NTP services service {"ntpd": ensure=> "running", } }
Αφού τελειώσετε με την επεξεργασία: πατήστε esc
Για να αποθηκεύσετε το αρχείο, πατήστε :wq!
Το επόμενο βήμα είναι να έλεγχος εάν ο κώδικας έχει συντακτικά σφάλματα. Εκτελέστε την ακόλουθη εντολή:
puppet parser validate demontp.pp
Βεβαιωθείτε ότι έχετε αλλάξει στο ρίζα για να μπορέσετε να ολοκληρώσετε τη δοκιμή χωρίς κανένα σφάλμα, εκτελώντας την εντολή:
su root
Δοκιμή είναι το επόμενο βήμα στη διαδικασία δημιουργίας κώδικα. Εκτελέστε την ακόλουθη εντολή για να εκτελέσετε μια δοκιμή καπνού:
Puppet applies demontp.pp --noop
Το τελευταίο βήμα είναι να τρέξιμο η μαριονέτα σε πραγματική λειτουργία και επαληθεύστε την έξοδο.
puppet apply demontp.pp
Ο Puppet δεν ερμήνευσε τίποτα επειδή η τάξη επίδειξης ήταν απλώς ορίζεται αλλά όχι δηλώνονται.
Έτσι, μέχρι να δηλώσετε την τάξη μαριονέτας, ο κωδικός δεν θα εφαρμοστεί.
Ας δηλώνω την κλάση επίδειξης μέσα στον ίδιο κώδικα χρησιμοποιώντας συμπεριλάβετε το όνομα της τάξης στο τέλος του κώδικα:
# Class Definition class ntpconfig { # Installing NTP Package package {"ntp": ensure=> "present", } # Configuring NTP configuration file file {"/etc/ntp.conf": ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n", } # Starting NTP services service {"ntpd": ensure=> "running", } } # Class Declaration include ntpconfig
Πάλι έλεγχος εάν ο κώδικας έχει συντακτικά σφάλματα. Εκτελέστε την ακόλουθη εντολή:
puppet parser validate demontp.pp
Βεβαιωθείτε ότι έχετε αλλάξει στο ρίζα για να μπορέσετε να ολοκληρώσετε τη δοκιμή χωρίς κανένα σφάλμα, εκτελώντας την εντολή:
su root
Δοκιμές είναι το επόμενο βήμα στη διαδικασία δημιουργίας κώδικα. Εκτελέστε την ακόλουθη εντολή για να εκτελέσετε μια δοκιμή καπνού:
Puppet apply demontp.pp --noop
Το τελευταίο βήμα είναι να τρέξιμο η μαριονέτα σε πραγματική λειτουργία και επαληθεύστε την έξοδο.
puppet apply demontp.pp
Αυτή τη φορά ο κώδικας εφαρμόζεται επειδή η κλάση ορίστηκε και στη συνέχεια δηλώθηκε.
Βεβαιωθείτε ότι το ntp.conf υπάρχει τώρα:
ls -lrt /etc/ntp.conf
Βεβαιωθείτε ότι η υπηρεσία ntp έχει ξεκινήσει εκτελώντας την ακόλουθη εντολή:
systemctl status ntpd