Page 81 - Linux Inside τ. 10

Linux Inside
81
περιέχει μόνο network device resources. Κάθε puppet device
τότε θα δημιουργεί ένα report back στον puppetmaster για
κάθε αλλαγή ή σφάλμα στον κόμβο.
Αυτά όσον αφορά θεωρητικά στον τρόπο λειτουργίας του
Puppet στο δίκτυό μας. Στην πράξη τώρα!
Πρώτα απ’ όλα, θα πρέπει να εγκαταστήσουμε και να ρυθ-
μίσουμε τον puppetmaster, δηλαδή το server μας από τον
οποίο θα γίνεται η συνολική διαχείριση του δικτύου. Αυτό
μπορούμε να το κάνουμε πληκτρολογώντας την ακόλουθη
εντολή στο τερματικό μας:
$ sudo apt-get install puppetmaster
Το service αρχικά δεν μπορεί να εκκινήσει, δεδομένου ότι
δεν υπάρχουν ακόμη διαθέσιμα puppet manifests για τη δια-
χείριση του δικτύου. Η puppet device ακόμα δεν τρέχει ως
«
δαίμονας» (daemon), οπότε ο καλύτερος τρόπος για να το
τρέξουμε είναι να το προσθέσουμε μέσω cron στο schedule.
Κάθε puppet device «γνωρίζει» τις συσκευές που θα διαχει-
ρίζεται, διαβάζοντας ένα απλό αρχείο ρυθμίσεων, το /etc/
puppet/device.conf. Το συγκεκριμένο αρχείο περιλαμβάνει τη
λίστα των συσκευών που θα διαχειριζόμαστε από το δεδομέ-
νο puppet device και έχει την εξής μορφή:
[
device1 certname] <--το certname της συσκευής
type cisco <--ο τύπος της συσκευής
url ssh://puppetuser:password@device1.example.com/
<--το URL της συσκευής
Το πιο σημαντικό πράγμα είναι να ρυθμιστεί σωστά το
device URL, που περιέχει τα στοιχεία για τη μέθοδο πρόσβα-
σης στη συσκευή (π.χ., SSH, telnet), το χρήστη και το
password για να συνδεθεί, το hostname της προαναφερθεί-
σας συσκευής στο δίκτυο, κάθε ενδεχόμενη TCP port, καθώς
και να «ενεργοποιεί» τη διαδικασία απαίτησης κωδικού για
τους unprivileged χρήστες.
Όταν έρθει η στιγμή να χρησιμοποιήσουμε το server
(
puppetmaster) στην πράξη, θέλουμε να είναι σε θέση να
«
σερβίρει» αρχεία τα οποία ενδεχομένως να αντιγράφονται
στους διαχειριζόμενους κόμβους του δικτύου, αλλά και να
έχουμε μία λίστα «εντολών» (actions) που θα εφαρμόζονται
στους hosts. Από προεπιλογή, το file-serving είναι απενεργο-
ποιημένο, επομένως θα πρέπει να το ενεργοποιήσουμε, κάτι
που επιτυγχάνεται τροποποιώντας το αρχείο
/
etc/puppet/fileserver.conf. Στην περίπτωση της δοκιμαστικής
εγκατάστασής μας, θέλουμε να σερβίρουμε ένα αρχείο στο
δίκτυο 192.168.2.x, οπότε οι αλλαγές που θα γίνουν στο αρ-
χείο αυτό είναι οι εξής:
[
files]
path /etc/puppet/files
allow 192.168.2.0/24
Αυτό σημαίνει ότι κάθε host στο range διευθύνσεων
192.168.2.0/24
μπορεί να «τραβήξει» αρχεία από το φάκελο
/
etc/puppet/files.
Το επόμενο πράγμα που πρέπει να κάνουμε είναι να δημι-
ουργήσουμε ένα αρχείο manifest (manifest file), το οποίο θα
περιέχει μέσα τα resources για τις απαραίτητες αλλαγές:
$ sudo mkdir -p /etc/puppet/manifests/
Το ακόλουθο manifest file το ονομάζουμε τώρα site.pp και
προσθέτουμε σε αυτό τα εξής:
class class1 {
file { "/tmp/file1":
ensure => present,
mode => 644,
owner => root,
group => root
}
}
node client2 { //σε ποιον κόμβο να τρέξει την κλάση
include class1
}
Ας εξηγήσουμε πιο αναλυτικά το περιεχόμενο αυτού του
αρχείου: στην πρώτη γραμμή γίνεται ο ορισμός του ονόματος
της κλάσης που θα εισάγεται αργότερα και θα εκτελείται
στους κόμβους του δικτύου. Ιδιαίτερη προσοχή θα πρέπει να
δοθεί στο file.
Αρχικά, ο ορισμός file είναι ένας από τους «τύπους ορι-
σμών» που γίνονται κατανοητοί από το Puppet. Συγκεκριμένα,
επιτρέπει εντολές σχετικά με την αντιγραφή αρχείων από τον
puppet server και τη διόρθωση/ανανέωση (και ορισμό) του
ownership ή/και των δικαιωμάτων (permissions) υπαρχόντων
αρχείων. Άλλοι συνηθισμένοι τύποι ορισμών που αναγνωρίζο-
νται εδώ είναι οι augeas, cron, checksum, exec και filebucket
(
ιδιαίτερα χρήσιμο για τη δημιουργία backup repositories στο
δίκτυο) στους οποίους δεν θα αναφερθούμε αυτή τη φορά.
Τώρα μπορούμε να εκκινήσουμε τον server:
sudo /etc/init.d/puppetmaster restart
Ρύθμιση puppet clients
Αφού ρυθμίσουμε τον puppetmaster μας, το επόμενο βήμα
είναι να εγκαταστήσουμε και να ρυθμίσουμε τον puppet client
σε κάθε κόμβο του δίκτυου μας που θέλουμε να ελέγχουμε
από το Puppet. Αρχικά, εγκαθιστούμε τον puppet client με την
εξής εντολή στο τερματικό του κόμβου:
$ sudo apt-get install puppet
Αφού ολοκληρωθεί η εγκατάσταση, θα ρυθμίσουμε σωστά
τον client. Από προεπιλογή, και πάλι, ο client θα προσπαθήσει
να ανιχνεύσει το όνομα puppet στο δίκτυο και να συνδεθεί σε
αυτό. Με τον editor της προτίμησής σας ενημερώστε το αρ-
χείο /etc/puppet/puppetd.conf, ώστε να είναι όμοιο με το πα-
ρακάτω:
[
puppetd]
server = puppetmaster
logdir = /var/log/puppet
vardir = /var/lib/puppet
rundir = /var/run
Όταν ολοκληρωθεί αυτή η διαδικασία, κάνουμε ένα restart
στον client, προκειμένου να τεθούν σε ισχύ οι αλλαγές:
$ sudo service puppet restart
Στην παρούσα φάση έχουμε έναν (σωστά) ρυθμισμένο
Linux Labs – Puppet
Γενική απεικόνιση του τρόπου λειτουργίας του Puppet.
1