Εκμάθηση μαριονέτας για αρχάριους: Βασικά στοιχεία και DSL

⚡ Έξυπνη Σύνοψη

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

  • 🧩 Διαχείριση διαμόρφωσης: Το Puppet διατηρεί τους διακομιστές, τον χώρο αποθήκευσης και τα δίκτυα σε μια γνωστή, συνεπή κατάσταση και διατηρεί ένα ελέγξιμο ιστορικό κάθε αλλαγής.
  • ️ Κύριος-Πράκτορας Archiδομή: Ένας master Linux μεταγλωττίζει καταλόγους και πράκτορες σε Linux, Windows, Solarisή το Mac OS τα εφαρμόζουν μέσω ασφαλών πιστοποιητικών.
  • 🔄 Μοντέλο έλξης: Οι πράκτορες ελέγχουν κάθε 1800 δευτερόλεπτα, λαμβάνουν τον απαιτούμενο κώδικα Puppet και διορθώνουν τυχόν παρέκκλιση διαμόρφωσης στον κόμβο.
  • 🧠 Δηλωτικό DSL: Γραμμένο σε Ruby, το Puppet χρησιμοποιεί μια δηλωτική γλώσσα, επομένως ορίζετε την επιθυμητή τελική κατάσταση αντί για εντολές βήμα προς βήμα.
  • 🧱 Δομικά στοιχεία: Οι πόροι, οι κλάσεις, τα μανιφέστα και οι ενότητες δομούν επαναχρησιμοποιήσιμο κώδικα, με 49 ενσωματωμένους βασικούς τύπους πόρων διαθέσιμους από προεπιλογή.
  • ⚙️ Παράδειγμα πρακτικής εφαρμογής NTP: Ορίστε και δηλώστε μια κλάση, επικυρώστε την με τον αναλυτή puppet validate και, στη συνέχεια, εφαρμόστε το μανιφέστο χρησιμοποιώντας την εντολή puppet apply.

Εκπαιδευτικό σεμινάριο για το Puppet που εξηγεί τα βασικά της διαχείρισης διαμόρφωσης, την αρχιτεκτονική master-agent και το δηλωτικό DSL

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

Τι είναι η Διαχείριση Διαμόρφωσης;

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

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

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

Τι είναι το Puppet;

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

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

Το Puppet είναι ειδικά σχεδιασμένο για τη διαχείριση της διαμόρφωσης του Linux και Windows συστήματα. Είναι γραμμένο σε Ruby και χρησιμοποιεί το μοναδικό του Domain Specific Lγλώσσα (DSL) για την περιγραφή της διαμόρφωσης του συστήματος.

Ποιες είναι οι εκδόσεις Puppet;

Το Puppet διατίθεται σε δύο εκδόσεις:

  • Μαριονέτα ανοιχτού κώδικαΕίναι μια βασική έκδοση του εργαλείου διαχείρισης διαμόρφωσης Puppet, γνωστού και ως Open Source Puppet. Είναι διαθέσιμο απευθείας από τον ιστότοπο του Puppet και διατίθεται με άδεια χρήσης στο σύστημα Apache 2.0.
  • Puppet EnterpriseΜια εμπορική έκδοση που προσφέρει λειτουργίες όπως αναφορά συμμόρφωσης, ενορχήστρωση, έλεγχο πρόσβασης βάσει ρόλων, γραφικό περιβάλλον χρήστη (GUI), API και εργαλεία γραμμής εντολών για την αποτελεσματική διαχείριση των κόμβων.

Τι μπορεί να κάνει το Puppet;

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

Διαχειριστής συστήματος που λειτουργεί με μη αυτόματο τρόπο στους διακομιστές
Ο διαχειριστής συστήματος λειτουργεί μη αυτόματα στους διακομιστές

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

Puppet Automates Διαχείριση διακομιστή
Το Puppet αυτοματοποιεί τη Διαχείριση διακομιστή

Το Puppet εκτελεί τις ακόλουθες λειτουργίες:

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

Puppet DSL και Προγραμματιστικά Παραδείγματα

Πριν μάθουμε το Puppet DSL, ας κατανοήσουμε τα παραδείγματα προγραμματισμού. Ένα παράδειγμα προγραμματισμού είναι ένα στυλ που χρησιμοποιείτε στον προγραμματισμό υπολογιστών.

Τέσσερις τύποι παραδειγμάτων είναι:

  • Επιτακτικός.
  • Δηλωτικός.
  • Λειτουργικό (το οποίο θεωρείται υποσύνολο του δηλωτικού παραδείγματος).
  • Αντικειμενοστραφής.

Θα επικεντρωθούμε στα προστακτικά και δηλωτικά παραδείγματα.

Imperative Paradigms

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

Παράδειγμα:

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

Δηλωτικά Παραδείγματα

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

Παράδειγμα:

Ας υποθέσουμε ότι πηγαίνετε στο γραφείο σας. Κλείζετε ένα ταξί Uber και καθορίζετε μόνο τον τελικό προορισμό (το γραφείο). Το να καθορίζετε τι πρέπει να κάνετε, αλλά όχι πώς να το κάνετε, είναι ένα δηλωτικό στυλ.

Παράδειγμα Τι πρέπει να κάνετε Πώς να το κάνουμε
επιτακτικός Ναι Ναι
Δηλωτικός Ναι Οχι

Το Puppet χρησιμοποιεί ένα παράδειγμα δηλωτικού προγραμματισμού

Το Puppet χρησιμοποιεί μια δηλωτική προσέγγιση προγραμματισμού.

Παράδειγμα: Δημιουργήστε έναν χρήστη στο σύστημα.

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

Δηλωτικά Παραδείγματα

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

Δηλωτικά Παραδείγματα

Μοντέλα ανάπτυξης εργαλείων διαχείρισης διαμόρφωσης

Υπάρχουν δύο μοντέλα ανάπτυξης για εργαλεία διαχείρισης διαμόρφωσης:

  • Μοντέλο ανάπτυξης που βασίζεται σε push: ξεκινά από έναν κύριο κόμβο.
  • Μοντέλο ανάπτυξης βασισμένο σε έλξη: ξεκινά από πράκτορες.

Μοντέλο ανάπτυξης που βασίζεται σε push

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

Μοντέλο ανάπτυξης βασισμένο στην έλξη

Σε αυτό το μοντέλο ανάπτυξης, οι μεμονωμένοι διακομιστές επικοινωνούν με έναν κύριο διακομιστή, επαληθεύουν και δημιουργούν μια ασφαλή σύνδεση, κατεβάζουν τις διαμορφώσεις και το λογισμικό τους και, στη συνέχεια, διαμορφώνονται ανάλογα — για παράδειγμα, οι Puppet και Chef.

Πώς λειτουργεί το Puppet;

Το Puppet βασίζεται σε ένα μοντέλο ανάπτυξης pull, όπου οι κόμβοι των πρακτόρων κάνουν τακτικά check-in — μετά από κάθε 1800 δευτερόλεπτα — με τον κύριο κόμβο για να διαπιστωθεί εάν χρειάζεται ενημέρωση στον παράγοντα. Εάν απαιτείται ενημέρωση, ο παράγοντας λαμβάνει τον απαραίτητο κώδικα Puppet από τον κύριο κόμβο και εκτελεί τις απαιτούμενες ενέργειες.

Ας το εξηγήσουμε αυτό με ένα παράδειγμα ρύθμισης master-agent.

Ο Δάσκαλος

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

Οι Πράκτορες

Αυτά είναι τα μηχανήματα-στόχοι που διαχειρίζεται το Puppet, με το λογισμικό Puppet agent εγκατεστημένο σε αυτά.

Ο παράγοντας μπορεί να ρυθμιστεί σε οποιοδήποτε υποστηριζόμενο λειτουργικό σύστημα, όπως το Linux, Windows, Solarisή Mac OS.

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

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

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

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

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

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

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

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

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

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

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

Μαριονέτες

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

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

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

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

Οι πόροι της μαριονέτας είναι τα δομικά στοιχεία της μαριονέτας.

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

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

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

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

Ένα μανιφέστο είναι ένας κατάλογος που περιέχει αρχεία DSL του Puppet. Αυτά τα αρχεία έχουν επέκταση .pp, η οποία σημαίνει πρόγραμμα Puppet. Ο κώδικας Puppet αποτελείται από ορισμούς ή δηλώσεις κλάσεων Puppet.

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

Οι ενότητες (modules) είναι μια συλλογή αρχείων και καταλόγων, όπως μανιφέστα και ορισμοί κλάσεων. Είναι οι επαναχρησιμοποιήσιμες και κοινόχρηστες μονάδες στο Puppet.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Puppet --help

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

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

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

Puppet help resource		
Puppet resource --help		

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

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

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

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

puppet resource –types

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

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

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

puppet describe <resource type name>	

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

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

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

Είναι δύσκολο για ένα νέο άτομο να κατανοήσει και να συσχετίσει πολλά μη διαχειριζόμενα αρχεία κώδικα Puppet. Εδώ χρειαζόμαστε κάποια βοήθεια.ping να συνδέσει λειτουργίες μεταξύ τους. Στόχος είναι η επίλυση ενός μόνο προβλήματος, όπως όλες οι λειτουργίες που απαιτούνται για τη ρύθμιση παραμέτρων SSH σε έναν διακομιστή, μια υπηρεσία NTP ή έναν πλήρη διακομιστή ιστού ή διακομιστή βάσης δεδομένων από την αρχή.

Τι είναι τα Μαθήματα Κουκλοθέατρου;

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

Η 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 δεν υπάρχει ήδη στον διακομιστή. Η ακόλουθη εντολή δεν θα επιστρέψει τίποτα εάν το πακέτο NTP δεν υπάρχει στον διακομιστή:

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 δεν παρουσίασε τίποτα επειδή το μάθημα επίδειξης ήταν απλώς ορίζεται αλλά όχι δηλώνονται.

Έτσι, μέχρι να δηλώσετε την κλάση 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

Συχνές Ερωτήσεις

Το Puppet είναι γραμμένο σε Ruby. Χρησιμοποιεί τη δική του δηλωτική Γλώσσα Περιορισμένης Χρήσης (DSL), έτσι ώστε οι διαχειριστές να περιγράφουν την επιθυμητή κατάσταση του συστήματος αντί να δημιουργούν σενάρια για κάθε βήμα. Το Puppet DSL είναι εμπνευσμένο από την Ruby, αλλά δεν χρειάζεται να γνωρίζετε Ruby για να γράψετε μανιφέστα.

Το Puppet χρησιμοποιεί ένα δηλωτικό, βασισμένο σε πράκτορες μοντέλο έλξης και το δικό του DSL, έτσι ώστε οι κόμβοι να ανακτούν καταλόγους από έναν κύριο κόμβο. Πιθανό είναι χωρίς agent και προωθεί τα playbooks YAML μέσω SSH. Το Puppet είναι κατάλληλο για μακροπρόθεσμη κρατική επιβολή, ενώ το Ansible είναι απλούστερο για γρήγορη, on-demand ενορχήστρωση.

Από προεπιλογή, ο Puppet master, που ονομάζεται επίσης Puppet Server, ακούει στη θύρα TCP 8140. Οι Puppet agents συνδέονται σε αυτήν τη θύρα μέσω HTTPS για να υποβάλουν δεδομένα και να κατεβάσουν τους μεταγλωττισμένους καταλόγους τους. Βεβαιωθείτε ότι η θύρα 8140 είναι ανοιχτή στο τείχος προστασίας μεταξύ των agents και του master.

Το Puppet master πρέπει να εκτελείται σε Linux. Οι Puppet agents εκτελούνται σε πολλές πλατφόρμες, συμπεριλαμβανομένου του Linux, Windows, Solarisκαι Mac OS. Αυτή η υποστήριξη cross-platform agent επιτρέπει σε έναν μόνο Puppet master να διαχειρίζεται έναν μικτό στόλο διακομιστών και σταθμών εργασίας από ένα κεντρικό σημείο.

Το Puppet Forge είναι το δημόσιο αποθετήριο προκατασκευασμένων ενοτήτων του Puppet που μοιράζονται το Puppet και η κοινότητα. Αντί να γράφετε μανιφέστα από την αρχή, μπορείτε να κατεβάσετε ενότητες που εγκαθιστούν και διαμορφώνουν λογισμικό όπως MySQL or Jenkinsκαι στη συνέχεια προσαρμόστε τα στο περιβάλλον σας.

Ναι. Το Puppet παραμένει ένα ευρέως χρησιμοποιούμενο εργαλείο διαχείρισης διαμόρφωσης και υποδομής ως κώδικα, το οποίο πλέον συντηρείται από την Perforce. Το Puppet 8 είναι η τρέχουσα κύρια έκδοση και εξακολουθεί να υποστηρίζει τόσο το Open Source Puppet όσο και το εμπορικό Puppet Enterprise για τη διαχείριση στόλων διακομιστών μεγάλης κλίμακας.

Οι βοηθοί τεχνητής νοημοσύνης μπορούν να δημιουργήσουν Puppet DSL από προτροπές απλής γλώσσας, να εξηγήσουν υπάρχοντα μανιφέστα και να επισημάνουν συντακτικά ή λογικά σφάλματα πριν εκτελέσετε την επικύρωση του αναλυτή puppet. Εργαλεία όπως ChatGPT Επιταχύνετε τη σύνταξη, αλλά ελέγχετε πάντα τους δημιουργημένους πόρους για σωστές διαδρομές και ταυτοσημία.

Ναί. GitHub Copilot Συμπληρώνει αυτόματα τα μανιφέστα Puppet, τις δηλώσεις πόρων και τους ορισμούς κλάσεων από ένα σύντομο σχόλιο ή ένα περιβάλλον αρχείου. RevΕλέγξτε την έξοδό του για τους σωστούς τύπους πόρων, τα ονόματα χαρακτηριστικών και τις εξαρτήσεις, επειδή ο παραγόμενος κώδικας μπορεί να αναφέρεται σε παρωχημένες ενότητες ή προεπιλογές.

Συνοψίστε αυτήν την ανάρτηση με: