Το προφίλ μας στο Google Plus
0

Αυτοματοποιημένες εγκαταστάσεις με το AutoYaST

Είστε υπεύθυνος για την εγκατάσταση διανομής Linux σε όλους τους υπολογιστές ενός τοπικού δικτύου. Δεχτείτε παρακαλούμε τα συγχαρητήριά μας — και καλό σας κουράγιο. Κάθε γνήσιο geek σίγουρα χαίρεται όταν του δίνεται η ευκαιρία να χαρίσει ζωή σε μια μηχανή, ξεκινώντας με την εγκατάσταση του OS. Τι γίνεται όμως όταν αντί για έναν ή δύο υπολογιστές έχουμε πέντε, δέκα ή ακόμη και περισσότερους; Ποιος μπορεί να αντέξει τόση χαρά, ειδικά όταν υπάρχει και deadline;

Το πρόβλημα που μόλις περιγράψαμε έχει περισσότερες από μία λύσεις. Ίσως, π.χ., υπάρχει πρόσβαση σε PXE boot server, οπότε οι υπολογιστές του δικτύου ξεκινούν απ’ αυτόν φορτώνοντας το κατάλληλο image και στη συνέχεια πραγματοποιείται η εγκατάσταση του λειτουργικού. Μια άλλη προσέγγιση είναι να ολοκληρωθεί η εγκατάσταση σε έναν μόνον υπολογιστή και μετά, με κάποιον τρόπο, τα περιεχόμενα του δίσκου να αντιγραφούν, bit προς bit, στους δίσκους των άλλων υπολογιστών. Βεβαίως, η αντιγραφή θα χρειαστεί να γίνει με τέτοιο τρόπο, ώστε μετά το πέρας της οι άλλοι υπολογιστές να είναι bootable. Σκεφτείτε επίσης ότι τα μηχανήματα τα οποία πρόκειται να δεχτούν το νέο λειτουργικό θα στερούνται πρόσβασης στο δίκτυο. Θα πρέπει λοιπόν είτε να φορτώσουν πρώτα κάποιο μίνι-λειτουργικό με το κατάλληλο λογισμικό (είπε κανείς “κλοουνζίλα“;), είτε να έχουμε δίσκους που μεταφέρονται και συνδέονται σε εκείνον με την έτοιμη εγκατάσταση (αυτή τη φορά είμαστε 100% βέβαιοι ότι κάποιος είπε “ντι-ντι“).

Στο παρόν άρθρο παρουσιάζουμε μια εντελώς διαφορετική, εξαιρετικά ευέλικτη λύση, η οποία ούτε την παρουσία PXE boot server προϋποθέτει, ούτε περίτεχνες και χρονοβόρες αντιγραφές χρειάζεται. Μόνος περιορισμός είναι ότι αφορά σε εγκαταστάσεις openSUSESUSE Linux Enterprise). Από την άλλη, βέβαια, όταν αρχίζουμε να σκεφτόμαστε όλα –ή έστω μερικά από– τα μηχανήματα ενός τοπικού δικτύου, δύσκολα μπορούμε να φανταστούμε ότι δεν θα τρέχουν openSUSE :P

Στο προκείμενο, μιλάμε για το AutoYaST: ένα πανίσχυρο σύστημα αυτόματης εγκατάστασης του openSUSE. Αναλυτικότερα, με κάποιον τρόπο που θα δούμε σε λίγο δημιουργούμε ένα AutoYaST profile. Αυτό δεν είναι τίποτε περισσότερο από ένα αρχείο XML με λεπτομερείς πληροφορίες εγκατάστασης και ρύθμισης. Από τη στιγμή που έχουμε το AutoYaST profile μας, προχωράμε κανονικά με την εγκατάσταση του openSUSE σε ένα οποιοδήποτε μηχάνημα. Μόνο που στις παραμέτρους που περνάμε στον πυρήνα, επιλέγοντας το κατάλληλο entry στο μενού του GRUB, υποδεικνύουμε τη θέση του XML. Μετά η εγκατάσταση του openSUSE ξεκινά κι ολοκληρώνεται αυτόματα — χωρίς επίβλεψη ή επεμβάσεις.

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

  • πώς φτιάχνουμε ένα AutoYaST profile αυτόματα και γρήγορα, ξεκινώντας από μια υπάρχουσα εγκατάσταση του openSUSE
  • πώς τροφοδοτούμε, δικτυακά, το profile στον installer του openSUSE
  • τι κάνουμε στις περιπτώσεις που το hardware ενός υπολογιστή διαφέρει από το hardware που περιγράφεται στο εκάστοτε AutoYaST profile

Δείτε τα screenshots που ακολουθούν, διαβάστε βεβαίως και το συνοδευτικό κείμενο.

Βήμα 1 | δημιουργία AutoYaST profile
Δουλεύουμε στο osuse0.colder.is, έναν υπολογιστή με το openSUSE Leap ήδη εγκατεστημένο. Το σύστημα είναι προσβάσιμο από το τοπικό δίκτυο, οπότε οι άλλοι υπολογιστές, στους οποίους θα γίνουν αυτοματοποιημένες εγκαταστάσεις, θα είναι σε θέση να διαβάσουν το AutoYaST profile δικτυακά, χωρίς δηλαδή να απαιτείται η μεταφορά/περιφορά του (π.χ., με κάποιο USB stick). Περισσότερα επ’ αυτού σε λίγο.

Φορτώνουμε λοιπόν το openSUSE Leap και με το zypper φροντίζουμε για την παρουσία του πακέτου autoyast2. Αυτό περιλαμβάνει το module του YaST για τη δημιουργία και γενικά για τη διαχείριση AutoYaST profiles.

Αναζητούμε κάποιο πακέτο που ονομάζεται 'autoyast' ή κάπως έτσι (1). Το εντοπίζουμε, ονομάζεται 'autoyast2', και το εγκαθιστούμε αμέσως (2).

Το module το ξεκινάμε φορτώνοντας το YaST Control Center και μεταβαίνοντας στην κατηγορία Miscellaneous (βλ. αριστερό, κάθετο πλαίσιο). Εκεί υπάρχουν δύο entries σχετικά με το AutoYaST. Αυτό που μας ενδιαφέρει είναι το Autoinstallation Cloning System. Με κλικ πάνω του ξεκινά η διαδικασία δημιουργίας ενός AutoYaST profile, το οποίο αντικατοπτρίζει επακριβώς τις επιλογές που κάναμε κατά την εγκατάσταση του συστήματος. Αναλυτικότερα, αναφερόμαστε σε επιλογές περί filesystems, λογαριασμών χρηστών, δικτύωσης, bootloader κ.λπ. Επιπλέον, αν μετά την εγκατάσταση κάναμε πρόσθετες αλλαγές στο σύστημα, όπως, π.χ., προσθήκη νέων λογαριασμών χρηστών, οι σχετικές πληροφορίες θα συμπεριληφθούν στο υπό δημιουργία profile.

Στο YaST Control Center πηγαίνουμε στην κατηγορία Miscallaneous και κάνουμε ένα κλικ στο Autoinstallation Cloning System. Σε πολύ λίγο θα έχουμε ένα AutoYaST profile που θα αντικατοπτρίζει την παρούσα εγκατάσταση.

Το AutoYaST profile δημιουργείται αυτόματα κι αποθηκεύεται στο αρχείο autoinst.xml, εντός του καταλόγου /root. Ίσως θέλουμε να το μεταφέρουμε σε κάποιον περισσότερο βολικό κατάλογο, ίσως κι όχι.

Το μήνυμα 'Cloning the system...' μοιάζει παραπλανητικό, αφού δεν λαμβάνει χώρα κάποια κλωνοποίηση του συστήματος, π.χ., με τη μορφή αντιγραφής. Δημιουργείται όμως ένα AutoYaST profile, το οποίο αν χρησιμοποιήσουμε κατά την εγκατάσταση του openSUSE σε άλλο μηχάνημα τότε θα καταλήξουμε με ένα σύστημα εντελώς παρόμοιο με αυτό που τώρα έχουμε.

Το θέμα μας τώρα είναι ότι χρειάζεται να καταστήσουμε το autoinst.xml διαθέσιμο σε άλλους υπολογιστές του τοπικού δικτύου. Μπορούμε να καταφύγουμε στον Apache, στον nginx ή σε οποιονδήποτε άλλο web server. Ίσως όμως να μην έχουμε έναν ολόκληρο διακομιστή ιστοσελίδων διαθέσιμο — και για να λέμε τα πράγματα με τ’ όνομά τους μάλλον θα ήταν υπερβολικό να επιστρατεύσουμε κάποιον μόνο και μόνο για το ταπεινό autoinst.xml. Ευτυχώς που είναι προεγκατεστημένη η Python, η οποία διαθέτει ένα module που λειτουργεί ως web server. Από ένα τερματικό, λοιπόν, μεταβαίνουμε στον κατάλογο του autoinst.xml και πληκτρολογούμε python -m SimpleHTTPServer. Τότε, όλα τα περιεχόμενα του καταλόγου θα είναι διαθέσιμα μέσω HTTP και συγκεκριμένα από τη διεύθυνση http://suse0.colder.is:8000 (εξ ορισμού, ο SimpleHTTPServer ακούει για αιτήσεις πελατών από το port 8000/TCP). Φυσικά, αν δεν υπάρχει FQDN (στο παράδειγμά μας είναι το suse0.colder.is) τότε στη θέση του θα είναι αρκετό να βάλουμε τη διεύθυνση IP του μηχανήματος (192.168.193.243, πάντα για την περίπτωσή μας).

Η χρήση ενός κανονικού, full featured διακομιστή ιστοσελίδων όπως είναι ο Apache ή ο nginx, μάλλον αποτελεί υπερβολή για το σερβίρισμα του autoinst.xml. Γι' αυτό κι αντιγράφουμε το αρχείο XML στον προσωπικό κατάλογο του χρήστη μας και φορτώνουμε το SimpleHTTPServer module της Python.

Σημείωση. Αν έχουμε το firewall ενεργοποιημένο, στο σημείο αυτό οφείλουμε να φροντίσουμε ώστε οι συνδέσεις στο port 8000/TCP να επιτρέπονται από hosts του λεγόμενου External Zone — μ’ άλλα λόγια από μηχανήματα του τοπικού δικτύου. Η ρύθμιση του firewall γίνεται πανεύκολα με τη βοήθεια του YaST και συγκεκριμένα χάρη στο module ονόματι firewall.

Το module ονόματι SimpleHTTPServer της Python εξ ορισμού χρησιμοποιεί το port 8000/TCP. Αν στο σύστημά μας το firewall είναι ενεργοποιημένο, φροντίζουμε ώστε να επιτρέπονται οι εισερχόμενες συνδέσεις στο προαναφερθέν port.

Βήμα 2 | αυτόματη εγκατάσταση με χρήση AutoYaST profile
Πηγαίνουμε τώρα σε έναν άλλον υπολογιστή και ξεκινάμε την εγκατάσταση του openSUSE, από DVD ή USB stick. Στην πρώτη οθόνη του installer, με τα βελάκια του δρομέα μετακινούμαστε πάνω από το entry με όνομα Installation αλλά δεν πατάμε το [Enter]. Πρώτα, στη θυρίδα Boot Options πληκτρολογούμε

autoyast2=http://osuse0.colder.is:8000/autoinst.xml

Φυσικά, στη θέση του osuse0.colder.is εσείς θα βάλετε το κατάλληλο FQDN ή την κατάλληλη διεύθυνση IP. Επίσης, αν ο απομακρυσμένος web server χρησιμοποιεί το τυπικό port (80/TCP), τότε θα παραλείψετε αυτό το :8000.

Πριν ακόμη φορτώσουμε τον installer για την εγκατάσταση του openSUSE Leap σε κάποιον άλλον υπολογιστή, με την εικονιζόμενη οδηγία φροντίζουμε ώστε να διαβαστεί το AutoYaST profile που δημιουργήσαμε προηγουμένως. Κατ' αυτόν τον τρόπο η νέα εγκατάσταση θα πραγματοποιηθεί αυτόματα και χωρίς καμία παρέμβαση από μέρους μας.

Αφού βεβαιωθούμε ότι δεν έχουμε κάνει κάποιο λάθος πληκτρολόγησης, πατάμε το [Enter] και η διαδικασία της αυτόματης εγκατάστασης ξεκινά. Ίσως δεν προλάβετε να δείτε το μήνυμα που φανερώνει ότι το αρχείο autoinst.xml διαβάστηκε. Θα το καταλάβετε όμως αν ρίξετε μια ματιά στο τερματικό απ’ όπου ξεκινήσατε το SimpleHTTPServer module της Python — ή στo log file του web server που χρησιμοποιείτε, τέλος πάντων.

Ίσως δεν προλάβουμε να δούμε κάτι σχετικό στα μηνύματα που εμφανίζονται στην οθόνη του νέου συστήματος, παρατηρώντας όμως το τερματικό από το οποίο φορτώσαμε το SimpleHTTPServer module της Python αμέσως διαπιστώνουμε πως το AutoYaST profile διαβάστηκε από τον installer.

Καθ’ όλη τη διάρκεια της εγκατάστασης δεν θα χρειαστεί να κάνετε κάτι, όλα θα γίνουν αυτοματοποιημένα. Κάποια στιγμή ο installer θα επανεκκινήσει το σύστημα και θα ξεκινήσει μια διαδικασία αναγνώρισης και ρύθμισης του hardware. Θα ακολουθήσει άλλο ένα reboot και θα βρεθούμε μπροστά από ένα πλήρως ρυθμισμένο λειτουργικό, παρόμοιο με εκείνο στο osuse0.colder.is.

Βήμα 3 | προσαρμογή στο hardware του εκάστοτε host
Ένα ή περισσότερα από τα PCs στα οποία εγκαθιστάτε το openSUSE σας αυτόματα, με το AutoYaST, ίσως έχουν διαφορετικά χαρακτηριστικά από το μηχάνημα στο οποίο δημιουργήσατε το AutoYaST profile. Σε τέτοιες περιπτώσεις, μετά την πρώτη εκκίνηση του λειτουργικού στο νέο PC, ίσως χρειαστεί να κάνετε μία ή δύο ρυθμίσεις. Σκεφτείτε, για παράδειγμα, ότι το αρχικό μηχάνημα είχε έναν μόνο δίσκο SSD, χωρητικότητας 128GB. Επιλέξατε να δημιουργήσετε ένα swap partition μεγέθους 2GB, ενώ όλο τον υπόλοιπο χώρο τον δώσατε στο root partition και, παρεμπιπτόντως, τo διαμορφώσατε κατά Ext4. Τώρα, ένα από τα μηχανήματα στα οποία εγκαθιστάτε το openSUSE αυτόματα, έχει δίσκο SSD χωρητικότητας 512GB. Μετά το πέρας της διαδικασίας εγκατάστασης θα διαπιστώσετε ότι ο δίσκος έχει: α) ένα διαμέρισμα swap μεγέθους 2GB, β) ένα root partition μεγέθους 126 (περίπου) GB, καθώς και γ) ελεύθερο χώρο 384GB που δεν έχει κατανεμηθεί σε καμία κατάτμηση. Είναι κρίμα να μένει όλος αυτός ο χώρος ανεκμετάλλευτος. Ευτυχώς, χάρη στο YaST –και συγκεκριμένα χάρη στο module ονόματι disk– είναι πολύ εύκολο να δημιουργήσετε μία ή περισσότερες νέες κατατμήσεις, τις οποίες και θα διαμορφώσετε κατά το filesystem της προτίμησής σας. Εναλλακτικά, κι επειδή το Ext4 filesystem το επιτρέπει, έχετε τη δυνατότητα να μεγεθύνετε το root partition μη καταστροφικά, ώστε να καταλαμβάνει περισσότερο χώρο ή ακόμη και όλον τον διαθέσιμο ελεύθερο χώρο.

Κατά περιπτώσεις, η αυτοματοποιημένη εγκατάσταση θα ολοκληρώνεται επιτυχώς αλλά θα χρειάζονται και κάποιες επεμβάσεις από μέρους μας. Ίσως, π.χ., το νέο σύστημα να έχει μεγαλύτερο δίσκο από το δίσκο του υπολογιστή στον οποίο φτιάξαμε το AutoYaST profile, οπότε τώρα έχουμε αποθηκευτικό χώρο που δεν έχει κατανεμηθεί. Χάρη στο module ονόματι disk του YaST, αυτή η κατάσταση διευθετείται πανεύκολα.

Χαρείτε το νέο σας τοπικό δίκτυο με openSUSE boxes, το οποίο καταφέρατε και στήσατε σε χρόνο ρεκόρ. Εκτός από εσάς, να είστε βέβαιοι ότι θα το χαρούν και οι χρήστες του.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων