Εκμάθηση μαριονέτας για αρχάριους: Τι είναι το 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 Automates Διαχείριση διακομιστή
Το 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.

Η επικοινωνία μεταξύ πλοιάρχου και πράκτορα δημιουργείται μέσω ασφαλών πιστοποιητικών.

Επικοινωνία πράκτορα Puppet Master
Επικοινωνία πράκτορα Puppet Master

Επικοινωνία μεταξύ του Master και του Agent

Βήμα 1) Μόλις δημιουργηθεί η συνδεσιμότητα μεταξύ του πράκτορα και του πλοιάρχου, ο πράκτορας Puppet στέλνει τα δεδομένα σχετικά με την κατάστασή του στον κεντρικό διακομιστή Puppet. Αυτά ονομάζονται Γεγονότα: Αυτές οι πληροφορίες περιλαμβάνουν το όνομα κεντρικού υπολογιστή, τις λεπτομέρειες του πυρήνα, τη διεύθυνση IP, τα στοιχεία ονόματος αρχείου κ.λπ.…

Επικοινωνία μεταξύ του Master και του Agent
Ο πράκτορας στέλνει γεγονότα στον κύριο

Βήμα 2) Το Puppet Master χρησιμοποιεί αυτά τα δεδομένα και συντάσσει μια λίστα με τη διαμόρφωση που θα εφαρμοστεί στον πράκτορα. Αυτή η λίστα ρυθμίσεων που πρέπει να εκτελεστεί σε έναν πράκτορα είναι γνωστή ως a κατάλογος. Αυτό μπορεί να αλλάξει όπως εγκατάσταση πακέτων, αναβαθμίσεις ή αφαιρέσεις, δημιουργία συστήματος αρχείων, δημιουργία ή διαγραφή χρήστη, επανεκκίνηση διακομιστή, αλλαγές διαμόρφωσης IP κ.λπ.

Επικοινωνία μεταξύ του Master και του Agent
Ο Master στέλνει έναν κατάλογο στον Πράκτορα

Βήμα 3) Ο πράκτορας χρησιμοποιεί αυτήν τη λίστα ρυθμίσεων για να εφαρμόσει τυχόν απαιτούμενες αλλαγές διαμόρφωσης στον κόμβο.

Σε περίπτωση που δεν υπάρχουν drifts στη διαμόρφωση, ο Agent δεν πραγματοποιεί αλλαγές διαμόρφωσης και αφήνει τον κόμβο να εκτελεστεί με την ίδια διαμόρφωση.

Επικοινωνία μεταξύ του Master και του Agent
Ο Πράκτορας εφαρμόζει τη διαμόρφωση

Βήμα 4) Μόλις ολοκληρωθεί, ο κόμβος αναφέρει πίσω στο κουκλοθέατρο υποδεικνύοντας ότι η διαμόρφωση έχει εφαρμοστεί και ολοκληρωθεί.

Μαριονέτες

Το Puppet παρέχει την ευελιξία για ενσωμάτωση Αναφορών με εργαλεία τρίτων, χρησιμοποιώντας Puppet API.

Τέσσερις τύποι δομικών στοιχείων Μαριονέτας είναι

  1. Υποστηρικτικό υλικό
  2. μαθήματα
  3. Δηλωτικό
  4. ενότητες

Πόροι Μαριονέτας

Οι πόροι Puppet είναι τα δομικά στοιχεία του Puppet.

Οι πόροι είναι οι ενσωματωμένες λειτουργίες που τρέχουν στο πίσω άκρο για να εκτελέσουν τις απαιτούμενες λειτουργίες σε μαριονέτα.

Μαθήματα Κουκλοθέατρου

Ένας συνδυασμός διαφορετικών πόρων μπορεί να ομαδοποιηθεί σε μια ενιαία μονάδα που ονομάζεται κλάση.

Μανιφέστο Μαριονέτας

Το Manifest είναι ένας κατάλογος που περιέχει αρχεία μαριονέτας DSL. Αυτά τα αρχεία έχουν επέκταση .pp. Η επέκταση .pp σημαίνει πρόγραμμα μαριονέτας. Ο κώδικας μαριονέτας αποτελείται από ορισμούς ή δηλώσεις μαθημάτων μαριονέτας.

Ενότητες Μαριονέτας

Τα modules είναι μια συλλογή αρχείων και καταλόγων όπως Manifests, Class Definitions. Είναι οι επαναχρησιμοποιήσιμες και κοινοποιήσιμες μονάδες στο Puppet.

Για παράδειγμα, η MySQL μονάδα για εγκατάσταση και διαμόρφωση MySQL ή τη μονάδα Jenkins για διαχείριση Jenkins, κ.λπ.

Ενότητες Μαριονέτας
Ενότητες Μαριονέτας

Τύποι πόρων Μαριονέτας

Γενικά, ένα σύστημα αποτελείται από αρχεία, χρήστες, υπηρεσίες, διαδικασίες, πακέτα κ.λπ. Στο Puppet, αυτά ονομάζονται πόροι. Οι πόροι είναι τα θεμελιώδη δομικά στοιχεία

Μαριονέτα. Όλες οι επεμβάσεις σε πράκτορες μαριονέτας εκτελούνται με τη βοήθεια πόρων μαριονέτας.

Οι πόροι Puppet είναι τα έτοιμα εργαλεία που χρησιμοποιούνται για την εκτέλεση διαφόρων εργασιών και λειτουργιών σε οποιαδήποτε υποστηριζόμενη πλατφόρμα. Μπορούμε να χρησιμοποιήσουμε έναν μεμονωμένο πόρο μαριονέτας για να εκτελέσουμε μια συγκεκριμένη εργασία ή μπορούμε να χρησιμοποιήσουμε πολλούς πόρους μαριονέτας μαζί για να εκτελέσουμε ορισμένες σύνθετες διαμορφώσεις εφαρμογών.

Οι πόροι μπορούν να έχουν διαφορετικούς τύπους. Χρήσεις μαριονέτας πόροι και τύπους πόρων για να περιγράψει τη διαμόρφωση ενός συστήματος.

Υπάρχουν τρία είδη τύπων πόρων:

  1. Τύποι πυρήνα μαριονέτας ή ενσωματωμένοι πόροι.
  2. Τύποι πόρων που καθορίζονται από μαριονέτα.
  3. Προσαρμοσμένοι τύποι πόρων μαριονέτας.

Τύποι πυρήνα μαριονέτας ή ενσωματωμένοι πόροι

Οι βασικοί ή ενσωματωμένοι τύποι πόρων είναι οι προ-ενσωματωμένοι τύποι πόρων μαριονέτας που αποστέλλονται με λογισμικό μαριονέτας. Όλοι οι βασικοί ή ενσωματωμένοι τύποι πόρων Puppet γράφονται και συντηρούνται από την ομάδα Puppet.

Τύποι πόρων που καθορίζονται από μαριονέτα

Οι καθορισμένοι τύποι πόρων είναι μικροί τύποι πόρων γραμμένοι σε δηλωτική γλώσσα Puppet χρησιμοποιώντας έναν συνδυασμό υπαρχόντων τύπων πόρων.

Προσαρμοσμένοι τύποι πόρων μαριονέτας

Οι προσαρμοσμένοι τύποι πόρων είναι εντελώς προσαρμοσμένοι τύποι πόρων γραμμένοι σε Ruby.

Ας εξερευνήσουμε τους τύπους πόρων μαριονέτας…

Στο τερματικό, πληκτρολογήστε την ακόλουθη εντολή για να εμφανίσετε μια λίστα με σχετικές υποεντολές Puppet:

Puppet --help

Προσαρμοσμένοι τύποι πόρων Puppet

Στην περίπτωσή μας, μας ενδιαφέρει η υποεντολή "πόρος” το οποίο θα χρησιμοποιήσουμε για να βρούμε τις πληροφορίες σχετικά με τους ενσωματωμένους τύπους πόρων μαριονέτας.

Στο τερματικό, πληκτρολογήστε οποιαδήποτε από τις ακόλουθες εντολές για να εμφανίσετε μια λίστα ενεργειών σχετίζεται με την υποεντολή μαριονέτα "πόρος"

Puppet help resource		
Puppet resource --help		

Προσαρμοσμένοι τύποι πόρων Puppet

Σε αυτή την περίπτωση, έχουμε το πόρος ως υποεντολή και – τύποι ως δράση.

Το Puppet έχει 49 ενσωματωμένους βασικούς τύπους πόρων.

Στο τερματικό, πληκτρολογήστε την ακόλουθη εντολή για να εμφανίσετε μια λίστα με τους διαθέσιμους ενσωματωμένους τύπους πόρων μαριονέτας:

puppet resource –types

Προσαρμοσμένοι τύποι πόρων Puppet

Κάθε τύπος υποστηρίζει μια λίστα με γνωρίσματα. Αυτά τα χαρακτηριστικά παρέχουν μια λεπτομερή περιγραφή που χρησιμοποιεί το Puppet για τη διαχείριση του πόρου.

Για να μάθετε όλα τα χαρακτηριστικά που σχετίζονται με τον τύπο πόρου μαριονέτας, χρησιμοποιήστε την ακόλουθη εντολή:

puppet describe <resource type name>	

Οι παράμετροι θα αναφέρουν όλα τα διαθέσιμα χαρακτηριστικά για αυτόν τον τύπο πόρου.

κούκλα περιγραφή πακέτο

Προσαρμοσμένοι τύποι πόρων Puppet

Είναι δύσκολο για ένα νέο άτομο να κατανοήσει και να συσχετίσει πολλά μη διαχειριζόμενα αρχεία κώδικα μαριονέτας. Εδώ χρειαζόμαστε κάποια ομαδοποίηση για να συνδέσουμε τις λειτουργίες. Ο στόχος είναι να λυθεί ένα μόνο πρόβλημα, όπως όλες οι λειτουργίες που απαιτούνται για τη διαμόρφωση του 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 υπάρχει ήδη στον διακομιστή. Ας αφαιρέσουμε το υπάρχον πακέτο NTP:

yum remove ntp

Αφού αφαιρέσετε το πακέτο, βεβαιωθείτε ότι το αρχείο ntp.conf δεν υπάρχει:

ls -lrt /etc/ntp.conf

Επίδειξη Εγκατάσταση NTP

Βεβαιωθείτε ότι η υπηρεσία ntp δεν υπάρχει εκτελώντας την ακόλουθη εντολή:

systemctl status ntp

Επίδειξη Εγκατάσταση 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

Βεβαιωθείτε ότι το ntp.conf υπάρχει τώρα:

ls -lrt /etc/ntp.conf

Βεβαιωθείτε ότι η υπηρεσία ntp έχει ξεκινήσει εκτελώντας την ακόλουθη εντολή:

systemctl status ntpd

Επίδειξη Εγκατάσταση NTP