Linux Inside
83
διαχειριστής θέλει να δημιουργήσει ένα αντίγραφο ενός αρ-
χείου σε κάθε σύστημα στο LAN, προσθέτει το ακόλουθο τμή-
μα στο αρχείο /etc/puppet/manifests/site.pp:
class class2 {
file { " path/to/files/desired-file ":
owner => root,
group => root,
mode => 440,
source =>
"
puppet://puppetmaster_address/path/to/files/desired-
file"
}
}
node default {
include class2
}
Σχετικά με τις κλάσεις στο Puppet
Ο διαχειριστής μπορεί να εκτελέσει κάθε είδους αλλαγή
στο δίκτυό του, τροποποιώντας κατάλληλα το αρχείο
/
etc/puppet/manifests/site.pp. Αυτό μπορεί να είναι ιδιαίτερα
βολικό για τη διαχείριση μικρών δικτύων ή δικτύων στα οποία
δεν εκτελούνται πολλές εντολές και διεργασίες, όμως για ένα
μεγαλύτερο δίκτυο μπορεί να αποτελεί πραγματικά πρόβλη-
μα. Για το λόγο αυτό, υπάρχει η δυνατότητα να «σπάει» αυτό
το αρχείο σε μικρότερα, δημιουργώντας κλάσεις οι οποίες με
τη σειρά τους καλούνται στο αντίστοιχο αρχείο. Οπότε σε αυ-
τή την περίπτωση το site.pp αρχείο θα ήταν της μορφής:
import "classes/*.pp"
node default {
include test1
include test2
include testν
}
Έτσι, ο διαχειριστής δημιουργεί τα αρχεία /etc/puppet/
manifests/classes/test1, /etc/puppet/manifests/classes/test2
κ.ο.κ., στα οποία προσθέτει το κατάλληλο περιεχόμενο, ώστε
να εκτελούνται οι λειτουργίες που επιθυμεί.
Μέχρι τώρα έχουμε χρησιμοποιήσει το «node default», προ-
κειμένου να ορίσουμε διάφορες διεργασίες σε κάθε κόμβο
του δικτύου, χωρίς να έχουμε αναφερθεί καθόλου στην περί-
πτωση που θέλουμε σε διαφορετικούς, μεταξύ τους, κόμβους
να εκτελεστούν διαφορετικές διεργασίες. Ας δούμε πώς μπο-
ρούμε να απευθυνθούμε σε διαφορετικούς κόμβους μέσω
manifests. Στο ακόλουθο παράδειγμα γίνεται η αντιγραφή του
desired-file-v στον αντίστοιχο κόμβο κάθε φορά, δηλαδή στον
κόμβο που καλείται να εκτελεστεί κάθε κλάση:
class class1 {
file { " path/to/files/desired-file ":
owner => root,
group => root,
mode => 440,
source =>
"
puppet://puppetmaster_address/path/to/files/desired-
file-1"
}
}
class class2 {
file { " path/to/files/desired-file ":
owner => root,
group => root,
mode => 440,
source =>
"
puppet://puppetmaster_address/path/to/files/desired-
file-2"
}
}
class class3 {
file { " path/to/files/desired-file ":
owner => root,
group => root,
mode => 440,
source =>
"
puppet://puppetmaster_address/path/to/files/desired-
file-3"
}
}
node default {
#
όλοι οι puppet nodes εφαρμόζουν αυτές τις
κλάσεις
include class1
}
node client1 inherits default {
#
ο client1 εκτελεί τις κλάσεις class1 και class2 και
όχι την class3
include class1
include class2
}
node client2 inherits default {
#
ο client2 εκτελεί τις κλάσεις class2 και class3
και όχι την class1
include class2
include class3
}
Τέλος, όσοι επιθυμούν να έχουν οπτική διαχείριση και έλεγ-
χο στο δίκτυό τους, μπορούν να χρησιμοποιήσουν το Puppet
Dashboard (εικόνα 3), ένα Web interface και reporting εργα-
λείο για το Puppet. Εκτός του ότι προσφέρει τη δυνατότητα
να γίνουν πλείστες ρυθμίσεις χωρίς τη χρήση τερματικού,
μελλοντικά μπορεί να ενσωματώσει και άλλα administrating
εργαλεία για τη διαχείριση του δικτύου. •
Linux Labs – Puppet
Ο πίνακας διαχείρισης του Puppet dashboard.
3