Τί εστί LCFG;

Το LCFG είναι ένα σύστημα με σκοπό την αυτοματοποίηση της εγκατάστασης και της ρύθμισης μεγάλου αριθμού συστημάτων UNIX. Είναι κυρίως κατάλληλο για ταχέως μεταβαλλόμενα περιβάλλοντα με πολλές διαφορετικές διαμορφώσεις. Τα αρχικά που αποτελούν το όνομα του έχουν παρθεί από το Local ConFiGuration.

Η ανάπτυξη του ξεκίνησε το 1993 στο τμήμα της Πληροφορικής του Πανεπιστήμιου του Εδιμβούργου από τον Paul Anderson. Η πρώτη αυτή έκδοση δούλευε μόνο σε Solaris. Μέσα στα επόμενα χρόνια, o Alistair Scobie έφτιαξε ένα port του LCFG για Linux με ένα εντελώς καινούργιο σύστημα εγκατάστασης κάνοντας χρήση πακέτων RPM. Έτσι το LCFG χρησιμοποιούταν για το στήσιμο μηχανημάτων που έτρεχαν Red Hat Enterprise Linux αρχικά και Fedora Core στη συνέχεια. Στα χρόνια που ακολουθούν, στο LCFG προσφέρουν όλο και περισσότεροι κυρίως από τον χώρο του Πανεπιστήμιου.
Τον τελευταίο χρόνο το LCFG μεταφέρθηκε στο περιβάλλον του Scientific Linux 5 το οποίο στην ουσία είναι το Red Hat Enterprise Linux 5 re-compiled.

Πώς δουλεύει

Το κάθε μηχάνημα που ελέγχεται από το LCFG έχει ένα προφίλ σε έναν κεντρικό server. Το κάθε προφίλ έχει ως όνομα αρχείου το hostname του μηχανήματος και κάνει include κάποιους headers με τον ίδιο τρόπο όπως γίνεται και στην C. Ο κάθε header περιγράφει πτυχές της ρύθμισης του συστήματος. Για παράδειγμα το μοντέλο του υπολογιστή, ότι είναι ένας web server κλπ. Με την χρήση των LCFG components, μπορεί το κάθε μηχάνημα να έχει τις δικές του ξεχωριστές ρυθμίσεις οι οποίες θα ελέγχονται από το LCFG.

Ένας δαίμονας στον κεντρικό server παράγει αρχεία XML από το κάθε προφίλ, και στη συνέχεια το δημοσιεύει σε έναν web server από τον οποίο το κάθε μηχάνημα δέχεται το προφίλ του. Κάθε αλλαγή στο προφίλ θα δημιουργήσει νέο XML αρχείο αλλάζοντας έτσι τις αντίστοιχες ρυθμίσεις στο αντίστοιχο μηχάνημα.

Το κάθε LCFG component έχει και από έναν αριθμό scripts τα οποία εγκαθίστανται στον πελάτη ανάλογα με το υποσύστημα το οποίο θα εγκατασταθεί (π.χ. MySQL server, Web server, DNS server). Το κάθε component θα ειδοποιηθεί όταν αλλάξει κάποιο resource σχετικό με τις λειτουργίες του και έτσι θα ενημερώσει κατάλληλα το σύστημα στο οποίο τρέχει. Αντίστοιχα πάλι εάν γίνουν αλλαγές στο σύστημα χωρίς αυτές να έχουν δηλωθεί μέσω του προφίλ, το αντίστοιχο component θα επαναφέρει τις ρυθμίσεις όπως αυτές υπάρχουν στο προφίλ.

Ένα LCFG component είναι υπεύθυνο για το ποια πακέτα είναι εγκατεστημένα στο σύστημα. Ελέγχει πια πακέτα είναι εγκατεστημένα μέσω μιας λίστας η οποία περιέχει τα πακέτα που θα έπρεπε να είναι κανονικά εγκατεστημένα. Εάν κάποιο έχει αφαιρεθεί χωρίς να δηλωθεί στο προφίλ τότε θα εγκατασταθεί ξανά αυτόματα. Ακριβώς το ανάποδο θα συμβεί σε περίπτωση που κάποιο νεό πακέτα εγκατασταθεί χωρίς να έχει δηλωθεί στο προφίλ.

Νέα μηχανήματα μπορούν να εγκατασταθούν αυτόματα κάνοντας χρήση ενός boot CD ή μέσω PXE. Για να πραγματοποιηθεί η εγκατάσταση θα πρέπει να υπάρχει το αντίστοιχο προφίλ για το νέο μηχάνημα. Έτσι, με το πέρας της εγκατάστασης το σύστημα μπορεί να είναι έτοιμο και ρυθμισμένο για την παροχή μια σειράς υπηρεσιών που θα χρειαζόταν ώρες για τη ρύθμιση τους εάν αυτό γινόταν χειροκίνητα.

Τι συστήματα υποστηρίζονται

Σήμερα, το LCFG υποστηρίζει τα Fedora Core 6, Scientific Linux 5, Mac OS X και Solaris 9. Η περισσότερη δουλειά και υποστήριξη είναι αυτή για το Scientific Linux.

Συντακτικό

Πριν δημοσιευθούν τα προφίλ, μεταγλωττίζονται από έναν C preprocessor και εάν δεν βρεθούν σφάλματα τότε δημοσιεύονται. Η χρήση του C  preprocessor κάνει το συντακτικό των προφίλ εύκολα κατανοητό. Για παράδειγμα θέλω να δηλώσω ότι ένα νέο μηχάνημα είναι ένας server τύπου PowerEdge 2950 της Dell. Εάν υποθέσουμε ότι υπάρχει ήδη ένας header για τις απαραίτητες ρυθμίσεις για το υλικό του server, το μόνο που μένει να δηλώσουμε στο νέο προφίλ είναι:

# include <poweredge2950.h>

Για την ρύθμιση του eth0 interface:

!network.interfaces     mADD(eth0)
!network.device_eth0    mSET(auto)
!network.ipaddr_eth0    mSET(192.168.0.10)
!network.netmask_eth0   mSET(255.255.255.0)
!network.network_eth0   mSET(192.168.0.0)
!network.broadcast_eth0 mSET(192.168.0.255)
!network.onboot_eth0    mSET(yes)
!network.gateway        mSET(192.168.0.1)

Πρόσθεση ενός νέου group στο /etc/group:

!auth.extragroup        mADD(lcfg)
!auth.grpent_lcfg       mSET(lcfg:x:1024:)

Τα “network” και “auth” είναι δύο από τα LCFG components, ακολουθούμενα από τα resources στα οποία θέλουμε να δώσουμε τιμές.

links:
http://www.lcfg.org/

3 thoughts on “Τί εστί LCFG;

  1. Έχεις κοιτάξει καθόλου το puppet; Φαίνεται ότι παίρνει ακρετό traction, και είναι το σύστημα που χρησιμοποιεί εδώ και καιρό το Fedora Infrastructure Project.

  2. panoskrt

    Μόνο μια ματιά του έχω ρίξει αλλά δεν έχω ασχοληθεί καθόλου λόγω LCFG🙂 Υποστιρίζει διαχείριση daemons,runlevels κλπ;

  3. Έχω χρησιμοποιήσει μόνο τα βασικά του puppet, ωστόσο από ότι καταλαβαίνω, μαζί με το func (Fedora-based-distros specific) αποτελεί μια αρκετά πλήρη λύση για τις περισσότερες ανάγκες ενός multi-server deployment.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s