Linux Inside
82
server που είναι έτοιμος να συνδεθεί με κάποιον κόμβο και
έναν (εξίσου σωστά) ρυθμισμένο client, ο οποίος έχει την
«
εξυπνάδα» για να ξέρει πού θα πρέπει να συνδεθεί, προκει-
μένου να πάρει εντολές για να τις εκτελέσει. Παρ’ όλα αυτά,
ο client δεν μπορεί να συνδεθεί στο server, καθώς ακόμα δεν
είναι εξουσιοδοτημένος (unauthorized) για κάτι τέτοιο! Προ-
κειμένου να διορθωθεί αυτό, στο τερματικό του server πλη-
κτρολογούμε:
#
puppetca --list
Οπότε και μας δείχνει μία λίστα με τα client nodes. Προκει-
μένου να «πιστοποιηθεί» κάθε node ξεχωριστά, πληκτρολο-
γούμε στο τερματικό για κάθε κόμβο:
#
puppetca --sign certname
Τώρα, κανονικά πρέπει να είναι όλα έτοιμα να λειτουργή-
σουν. Ο server είναι σε θέση να αποδεχθεί συνδέσεις από
τους puppetd κόμβους και αυτοί, εν συνεχεία, θα εκτελέσουν
το περιεχόμενο του site.pp manifest file. Αν κατά τη διάρκεια
της σύνδεσής τους με το server αυτό το αρχείο αλλάξει, οι
κόμβοι του δικτύου επικοινωνούν και ενημερώνονται από το
server ανά τακτά χρονικά διαστήματα (περίπου κάθε 30 λε-
πτά), επομένως γίνεται αυτόματα ο όποιος συντονισμός στα
καινούργια δεδομένα.
Ο διαχειριστής του δικτύου μπορεί να διαπιστώσει εάν όλα
λειτουργούν σωστά, πληκτρολογώντας στο τερματικό την
εντολή:
#
ls -l /tmp/file1
Η ίδια μέθοδος μπορεί να ακολουθηθεί για κάθε κόμβο στο
LAN, προκειμένου να συνδεθεί και να ρυθμιστεί κατάλληλα.
Αφού γίνουν όλες οι απαραίτητες προσθήκες και αλλαγές,
πρέπει να γίνει restart στο puppet service, ώστε να τεθούν σε
ισχύ οι αλλαγές, όπως έγινε και πιο πριν στο server μας. Οπό-
τε στο τερματικό μας πληκτρολογούμε:
$ sudo service puppet start
Έτσι ολοκληρώνεται η διαδικασία της εγκατάστασης και
ρύθμισης του puppet client και του puppet server, ώστε να
επικοινωνούν μεταξύ τους.
Αφού αναφερθήκαμε γενικά στο πώς μπορούμε να δημι-
ουργήσουμε ένα puppet network και είδαμε πώς μπορούμε
να δημιουργήσουμε απλά manifest files, καιρός να εμβαθύ-
νουμε λίγο στη δημιουργία των τελευταίων, ώστε να μπορού-
με να καλύψουμε όλες τις ανάγκες μας. Τα manifests, αφού
δημιουργηθούν από το χρήστη, όπως προαναφέραμε, συγ-
χρονίζονται αυτόματα από το Puppet. Αυτό όμως δεν σημαί-
νει ότι εκτελούνται αυτόματα από τη στιγμή που συγχρονίζο-
νται. Τα manifests, πριν εφαρμοστούν, γίνονται compile σε
έναν «κατάλογο» που αναπαριστά τα resources στη σειρά που
πρέπει να γίνουν sync. Αξίζει επίσης να σημειώσουμε ότι το
Puppet φροντίζει από μόνο του, ώστε ο χρήστης να μην χρη-
σιμοποιήσει το ίδιο όνομα για δύο resources που δημιουργεί
στα manifests.
Τι μπορούμε να κάνουμε με το Puppet;
Ποιες είναι πρακτικά οι λειτουργίες που μπορούμε να εκτε-
λέσουμε με το Puppet; Ο διαχειριστής του δικτύου χρησιμο-
ποιεί το Puppet για να διαχειρίζεται, να συντηρεί και να ελέγ-
χει τα συστήματα με ευκολία και ταχύτητα. Δηλαδή μπορεί να
βοηθήσει πρακτικά στην εγκατάσταση, ενημέρωση ή απεγκα-
τάσταση πακέτων, στην εφαρμογή συνολικών (global) ρυθμί-
σεων στο δίκτυο ευθύνης του, είτε στην οργάνωση, αντιγρα-
φή και διαγραφή των αρχείων που βρίσκονται στα συστήματα.
Υπάρχουν επίσης φορές που ο διαχειριστής του δικτύου θέ-
λει να εκτελέσει κάποια εντολή στα συστήματα μέσω του
Puppet. Δεν τον ενδιαφέρει πώς και τι θα κάνει, αρκεί να το
κάνει γρήγορα και αποτελεσματικά. Αυτό είναι ιδιαίτερα χρή-
σιμο σε πολλές περιπτώσεις. Η puppet-«εντολή» exec κάνει
ακριβώς αυτό το πράγμα, εκτελώντας εύκολα σε κάθε μηχά-
νημα μία εντολή του χρήστη-διαχειριστή. Ακολουθεί ένα πα-
ράδειγμα puppet manifest:
exec { "refresh_cache":
command => "refresh_cache 8600",
path => "/usr/local/bin/:/bin/",
#
path => [ "/usr/local/bin/", "/bin/" ], # alternative
syntax
}
το οποίο ανανεώνει την cache του μηχανήματος.
Άλλες φορές, λόγω βιασύνης κυρίως, ο διαχειριστής ενδέ-
χεται να θέλει να εκτελέσει άμεσα μία εντολή στο Puppet, χω-
ρίς να περιορίζεται χρονικά από τη διαδικασία κατασκευής
και εκτέλεσης ενός manifest ή κάτι παρόμοιο. Αυτό επιτυγχά-
νεται με χρήση της εντολής Apply και της παραμέτρου --
execute. Για παράδειγμα, στο τερματικό του ο διαχειριστής
μπορεί να εκτελέσει:
$ puppet apply –execute entolh_puppet.
Παρ’ όλα αυτά, αν ο διαχειριστής θέλει να εκτελέσει μία συ-
γκεκριμένη λειτουργία μέσα από τη δημιουργία ενός puppet
manifest, αφού ολοκληρώσει τη «συγγραφή» του, προκειμέ-
νου να το εφαρμόσει, εισάγει στο τερματικό του:
$ puppet apply
/
path/to/manifests_folder/manifest_name.pp
Βασική λειτουργία που συναντάται συχνά σε κάθε είδος δι-
κτύου είναι η αντιγραφή αρχείων από τον puppet master
προς τους puppeted υπολογιστές. Αυτό μπορεί να γίνει με το
file manifest type. Μάλιστα, είναι τόσο απλό, που το μόνο που
χρειάζεται να γίνει από την πλευρά του χρήστη είναι να προ-
στεθεί η πηγή του αρχείου (file source) στο manifest file που
δημιουργείται για το σκοπό αυτό. Υποθέτοντας, λοιπόν, ότι ο
Linux Labs – Puppet
Η διαδικασία δημιουργίας ενός manifest.
2