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

deltaHacker 061 editorial: Κάτι απλό, που έχει τον ατελείωτο

Φίλες και φίλοι,

  • Καλός συνάδελφος και φίλος, δύο και κάτι μήνες πριν, είχε προσπαθήσει να με προειδοποιήσει.
  • Ωραίο προτζεκτάκι, ξεκίνησέ το, μου είχε πει, αλλά μην ασχοληθείς πάρα πολύ. —Και γιατί να μην ασχοληθώ πάρα πολύ;Γιατί μετά παίζει να μη σου κάνει καρδιά να τ’ αφήσεις και να προχωρήσεις σε κάτι άλλο, πιο σύνθετο ή έστω πιο ενδιαφέρον.
  • Έλεγα στο συνάδελφο για το qboxes, ένα script σε BASH που σκεφτόμουν να σκαρώσω ώστε να διευκολύνομαι λίγο με τη δουλειά στη δουλειά.
  • Διόρθωση: για να διευκολύνομαι λίγο με τη δουλειά στη νάιν-του-φάιβ, όπως συνήθιζαν να λένε και οι εντρεπρεν(έ|ού)ρς. Ίσως ακόμη να λένε “νάιν του φάιβ” –ειδικά όσοι βρίσκονται ακρός δε ποντ– αλλά κάτι μου λέει πως οι της απ’ εδώ μεριάς (του ποντ) έχουν κάπως ξενερώσει — ή έστω απλά ηρεμήσει.
  • Το qboxes που λέτε, είναι ένα σκριπτ που πλέον χρησιμοποιώ συχνά-πυκνά, ώστε ξεκινώντας από το μηδέν να συγκροτώ libvirt-based Ceph clusters για installation/regression testing, αλλά και για να δοκιμάζω με ασφάλεια όποια ιδέα μου έρχεται στο μυαλό (όποτε μου έρχεται).
  • Το qboxes δεν κάνει κάτι που δεν μπορούν να κάνουν εργαλεία σαν τα virsh, virt-clone, virt-customize κ.ά., είναι όμως αρκετά πιο απλό στη χρήση και σκόπιμα προσαρμοσμένο στο δικό μου γουόρκ-φλόου. Ακριβέστερα: Κάνει λιγότερα σε σχέση με όσα μπορούν να κάνουν εργαλεία από τα πακέτα libvirt-client, guestfs-tools και virt-install, αλλά μαθαίνεται πιο εύκολα και είναι περισσότερο επεξηγηματικό σε περίπτωση που κάτι δεν πάει καλά.
  • Σχετικά γρήγορα, το σκριπτάκι άρχισε να με βολεύει και να με διευκολύνει στην πράξη — κι όχι μόνον όσον αφορά στο Ceph. Από νωρίς μάλιστα είχα αρχίσει να το διασκεδάζω κιόλας. Πώς να το κάνουμε, άλλο είναι να συντάσσεις μια αναφορά και στην ενότητα regression testing plan να παραθέτεις εντολές με λίγο-πολύ γνωστά εργαλεία, κι άλλο να αμολάς –ξαφνικά και χωρίς καμία πρότερη προειδοποίηση– εντολές όπως qboxes define --ram=2048 --cores=2 --volume-size=256 --network=qbxnet --guest-os=sles12sp3 --pool=ses5 osd{1..5} — και στο καπάκι να προσθέτεις κι ένα qboxes attach --name=data --size=2048 --pool=tank osd{1..5}. (Εντάξει, θα μπορούσα να είχα παραθέσει λίγο απλούστερα παραδείγματα. Πότε πότε όμως θέλω κι εγώ να τραβάω την προσοχή σας. Καταλαβαίνετε.)
  • Δύο μήνες πριν, λοιπόν, το qboxes ήταν κατά κύριο λόγο σχεδιασμένο για έναν χρήστη, υπό την έννοια ότι δεν με ένοιαζε και πολύ αν κάποιος άλλος θα το έβρισκε χρήσιμο ή όχι. Αυτό τουλάχιστον έλεγα στον εαυτό μου, έως τη στιγμή που ένας –ψέματα, 100% περισσότεροι– συνάδελφοι το πρόσεξαν, κι έριξαν μια ματιά. Μετά από μερικές κουβέντες που ακολούθησαν, ομολογώ πως άρχισα να βλέπω το qboxes διαφορετικά.
  • Η κεντρική ιδέα είναι ότι ναι μεν αποτελεί ένα wrapper script άλλων εργαλείων που σχεδιάστηκε για να διευκολύνει τον γράφοντα, αλλά με συγκεκριμένες τροποποιήσεις και προσθήκες ίσως αποδειχθεί ενδιαφέρον σε περισσότερους από έναν χρήστες.
  • Επιτρέψτε μου να παραθέσω δύο παραδείγματα, για να σας δείξω προς τα πού το πάω. Γενικά, το qboxes καταλαβαίνει μια σειρά από εντολές, κι αυτές με τη σειρά τους δέχονται άλλες υποεντολές ή/και παραμέτρους.
  • Μία από τις εντολές που καταλαβαίνει το qboxes είναι η annihilate. Μπορούμε να πούμε ότι είναι αντίστοιχη της εντολής undefine, που καταλαβαίνει το virsh, αλλά κάνει πολλά περισσότερα. Αναλυτικότερα, πληκτρολογώντας virsh undefine guest διαγράφεται το αρχείο XML που περιγράφει την εικονική μηχανή με όνομα guest, όμως τα σχετικά storage volumes (sparse QCOW2 files) και φυσικά τα όποια snapshots παραμένουν άθικτα. Είναι ευθύνη του χρήστη να βρει που είναι αποθηκευμένα τα αντίστοιχα αρχεία και να τα διαγράψει, αν φυσικά δεν τα θέλει. Ο χρήστης μάλιστα οφείλει να είναι επιμελής όταν διαγράφει volumes, αφού αν δεν το κάνει σωστά τότε τα αντίστοιχα storage pools θα φαίνεται σαν να περιέχουν τα volumes — κι ας έχουν αυτά διαγραφεί. Τώρα, αν κάποιος ξέρει καλά το virsh, δεν θα έχει κανένα πρόβλημα να διαγράφει ολοκληρωτικά και σωστά όποια VMs θέλει. Εναλλακτικά, ο ίδιος “κάποιος” μπορεί να καταφύγει στο qboxes και να πληκτρολογήσει μία μόνο εντολή, σαν αυτή: qboxes annihilate guest. Τίποτε περισσότερο. Το εργαλείο θα εξαφανίσει το XML της μηχανής, τα όποια snapshots έχει, το ίδιο και τα storage volumes της. Θα ενημερώσει, επίσης, και τα αντίστοιχα storage pools, ώστε να μην εμπεριέχουν άκυρα metadata για τα volumes. Σκέφτομαι, τώρα: η εντολή annihilate αφορά σε VMs και μόνο. Μήπως αξίζει να αλλάξω το command structure του qboxes, ώστε η annihilate να διαγράφει και storage pools, storage volumes ή ακόμη και libvirt networks;
  • Δεύτερο παράδειγμα, αυτή τη φορά με την εντολή create, για τη δημιουργία είτε νέων storage pools είτε νέων libvirt networks. Σοβαρά τώρα, το βρίσκετε εσείς σωστό για μια εντολή που λέγεται create, να μην είναι ικανή για τη δημιουργία νέων εικονικών μηχανών ή νέων volumes; Μέχρι στιγμής, για τη δημιουργία ενός VM μέσω του qboxes υπάρχει η εντολή clone, η οποία προϋποθέτει την ύπαρξη κάποιου άλλου VM το οποίο δημιουργήθηκε, π.χ., με το Virtual Machine Manager, και τώρα χρησιμοποιείται ως template. Υπάρχει επίσης και η εντολή define, για τη δημιουργία “κενών” εικονικών μηχανών, δηλαδή VM με “άδεια” storage volumes και χωρίς guest OS. Υποθέστε ότι έχουμε ένα QCOW2 file με μια πλήρη εγκατάσταση ενός λειτουργικού. Δεν θα ήταν βολικό αν, με χρήση της create, χτίζαμε ένα πλήρες VM γύρω από το συγκεκριμένο QCOW2;
  • Θα μπορούσα να συνεχίσω με παραδείγματα υποψηφίων features για το qboxes, όμως δεν χρειάζεται. Το θέμα εδώ είναι ότι ένα σχετικά απλό script, που θα έπρεπε να έχω έτοιμο και feature-complete σε μία –το πολύ δύο– εβδομάδες, φαίνεται τελικά ότι έχει τον ατελείωτο.
  • Χρειάζεται ψυχραιμία και σύνεση, φίλες και φίλοι. Κάποια στιγμή ο γράφων πρέπει να φανεί γενναίος και να βάλει μια τελεία — ή έστω μια έντονη άνω τελεία. Εξάλλου υπάρχουν κι άλλα πρότζεκτ στον ορίζοντα, πολύ πιο ενδιαφέροντα. Μερικά από αυτά δεν θα είναι ριζικά διαφορετικά από το qboxes, θα έχουν όμως άλλη αξία για τον γράφοντα.
  • Πώς να το κάνουμε, άλλο είναι να γράφεις σε BASH, κι άλλο σε Python 3. Επίσης: Καλό το Command Line Interface (CLI), καλύτερο όμως ένα CLI μαζί με ένα μοντέρνο web dashboard παραδίπλα.
  • Ομολογουμένως, δεν είναι και πολλές οι προκλήσεις που προδιαγράφονται για το κοντινό μέλλον. Είναι όμως εξαιρετικά ενδιαφέρουσες, βεβαίως και διασκεδαστικές.

One Response to “deltaHacker 061 editorial: Κάτι απλό, που έχει τον ατελείωτο”

  1. bananasplit | 04/03/2018 at 16:12

    καλημέρα!να περιμένουμε πια μια σταθεροποίηση της έκδοσης;ή τα πράγματα οικονομικά εξακολουθούν να είναι άσχημα,οπότε τεύχη θα βγαίνουν όταν είναι εφικτό;;

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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