Από τη λίστα με τα υποστηριζόμενα OSes για δημιουργία droplets στη DigitalOcean, λάμπει διά της απουσίας του το openSUSE Leap. Εκτός βέβαια κι αν αναλάβουμε δράση, οπότε το Leap θα συνεχίσει να λάμπει στο λογαριασμό μας – αλλά πλέον διά της παρουσίας του.

Αφήνοντας γρήγορα κατά μέρος τα χαριτωμένα σχήματα λόγου, να πούμε ότι εδώ και καιρό η DigitalOcean έχει τροποποιήσει την πολιτική της αναφορικά με τα παρεχόμενα λειτουργικά συστήματα για δημιουργία droplets (VMs). Συγκεκριμένα, η εταιρεία προσφέρει στους χρήστες δυνατότητα για upload των δικών τους Operating System images, ώστε με βάση αυτά να δημιουργούν droplets με το λειτουργικό της προτίμησής τους. Έτσι, πέρα από τα επισήμως υποστηριζόμενα συστήματα Debian, Ubuntu, Fedora, CentOS και FreeBSD, μπορούμε πλέον να έχουμε droplets με το λειτουργικό που αγαπάμε ή είναι καταλληλότερο για την εφαρμογή που αναπτύσσουμε.

Παρουσιάζουμε στη συνέχεια έναν 100% αυτοματοποιημένο τρόπο παραγωγής Operating System image με το openSUSE Leap 15.1, το οποίο θα έχουμε στο λογαριασμό μας στη DigitalOcean και με βάση αυτό θα φτιάχνουμε lean, mean, Leap machines (συγνώμη).

Προαπαιτούμενα

Η δημιουργία του image με το openSUSE Leap θα γίνει αυτοματοποιημένα, πρέπει όμως να εργαστούμε από την κατάλληλη πλατφόρμα και φυσικά να διαθέτουμε τα απαραίτητα εργαλεία. Συγκεκριμένα, χρειαζόμαστε:

  • Υπολογιστή με σύγχρονη διανομή Linux, καθώς και τα QEMU και libvirt. Αν το μηχάνημά σας τρέχει openSUSE Leap τότε ένας πολύ εύκολος τρόπος προκειμένου να εγκαταστήσετε όλο το απαραίτητο λογισμικό –και μάλιστα να το ρυθμίσετε–, είναι με τη βοήθεια του κατάλληλου YaST module: από ένα τερματικό απλά πληκτρολογήστε sudo yast2 vm.
  • Το Packer της HashiCorp. Αν δεν είστε εξοικειωμένοι με το υπέροχο αυτό εργαλείο, προτείνουμε να αφιερώσετε λίγο χρόνο και να το μάθετε διαβάζοντας το σχετικό μας άρθρο.
  • Το σύστημα configuration management (κι όχι μόνο) ονόματι Ansible. Διαβάστε το σχετικό installation guide για επιλογές εγκατάστασης αναλόγως της διανομής σας.
  • Λογαριασμό στη DigitalOcean. Αν δεν έχετε ήδη λογαριασμό εκεί ή απλά θέλετε νέο λογαριασμό, φτιάξτε τον με κλικ εδώ. Αποκτάτε έτσι $50 σε credit για 30 ημέρες, ενώ στηρίζετε και το hosting του ðhacker.

Παραγωγή image με openSUSE Leap

Ό,τι χρειάζεται το έχουμε σε σχετικό repository στο GitHub. Κλωνοποιήστε το και μεταβείτε στον αντίστοιχο κατάλογο:

git clone https://github.com/colder-is-better/digitalocean-custom-images.git
cd digitalocean-custom-images

Από τον κατάλογο provisioners/ssh_keys διαγράψτε όλα τα αρχεία *.pub. Στην ίδια θέση φτιάξτε ένα ή περισσότερα νέα αρχεία με ό,τι όνομα θέλετε – αλλά πάντα με κατάληξη *.pub. Μέσα σε καθένα εξ αυτών βάλτε το δημόσιο κλειδί SSH ενός χρήστη σας. Όλα αυτά τα δημόσια κλειδιά θα υπάρχουν στο αρχείο authorized_keys του root, στο custom image με το Leap. Έτσι, στα droplets που θα δημιουργείτε με βάση το εν λόγω image θα ‘χετε ασφαλή κι απευθείας πρόσβαση στο λογαριασμό του root χωρίς πληκτρολόγηση password, εννοείται από τους λογαριασμούς χρηστών με τα αντίστοιχα ιδιωτικά κλειδιά.

Στη συνέχεια, πηγαίνετε στον κατάλογο definitions

cd definitions

…και ξεκινήστε τη δημιουργία του image πληκτρολογώντας κάτι τέτοιο:

PACKER_CACHE_DIR=~/packer_cache ~/bin/packer build leap151do.json

Στο σημείο αυτό αξίζει να κάνουμε μερικές διευκρινίσεις. Στη μεταβλητή PACKER_CACHE_DIR αντιστοιχίζουμε την πλήρη διαδρομή προς έναν κατάλογο εντός του οποίου το Packer κατεβάζει ISO images αλλά μόνον όταν δεν τα βρίσκει εκεί. Προσέξτε εξάλλου ότι εμείς έχουμε το εκτελέσιμο του Packer μέσα στον κατάλογο bin, στο home directory του χρήστη μας. Εσείς ίσως το έχετε κάπου αλλού, οπότε τροποποιήστε την παραπάνω εντολή αναλόγως. Υπόψιν, τέλος, ότι το build ίσως χρειαστεί αρκετό χρόνο προκειμένου να ολοκληρωθεί. Αν, π.χ., δεν έχετε γρήγορη σύνδεση στο Internet και το Packer χρειαστεί να κατεβάσει το ISO του openSUSE, θα περιμένετε λίγο. Ακόμη κι όταν η εγκατάσταση του openSUSE ολοκληρωθεί, ο provisioner που ακολουθεί αναβαθμίζει όλα τα ήδη εγκατεστημένα πακέτα οπότε και κατά τη διάρκεια αυτού του σταδίου θα χρειαστεί να δείξετε λίγη υπομονή.

Ολοκλήρωση δημιουργίας και προετοιμασίας custom image με το openSUSE Leap 15.1.Το Packer ολοκλήρωσε το build του image με το Leap 15.1, ενώ και το Ansible τελείωσε με το provisioning του συστήματος.

Το Leap στο cloud της DigitalOcean

Όταν το Packer ολοκληρώσει την εργασία του θα σας αφήσει το αρχείο openSUSE-Leap-15.1.qcow2.gz, στον κατάλογο /tmp/packer_out. Αυτό είναι που θα πρέπει ν’ ανεβάσετε στο λογαριασμό σας στη DigitalOcean: συνδεθείτε, επιλέξτε Manage / Images / Custom Images, μετά κάντε κι ένα κλικ στο Import via URL ή στο Upload Image. Περισσότερες πληροφορίες για το πώς ανεβάζουμε custom images στο λογαριασμό μας, καθώς και για το πώς φτιάχνουμε νέα droplets που βασίζονται σε αυτά, μπορείτε να διαβάσετε στο επίσημο documentation της DigitalOcean. Δείτε επίσης τα screenshot που ακολουθούν, διαβάστε και τις αντίστοιχες περιγραφές.

Ανέβασμα custom image στο cloud της DigitalOcean μέσω τρίτου server.Ανέβασμα custom image στο cloud της DigitalOcean μέσω τρίτου server.

Εισαγωγή ονόματος για το custom image, καθορισμός τύπου διανομής, επιλογή data center για τη φιλοξενία του image.Εισαγωγή ονόματος για το custom image, καθορισμός τύπου διανομής (δεν υπάρχει entry για openSUSE, γι’ αυτό και το Custom), επιλογή data center για τη φιλοξενία του image.

Προαιρετική εισαγωγή tags και περιγραφής, κι εκκίνηση της διαδικασίας αποστολής του image στο cloud της DigitalOcean.Προαιρετική εισαγωγή tags και περιγραφής, κι εκκίνηση της διαδικασίας αποστολής του image στο cloud της DigitalOcean.

Το custom image με το openSUSE Leap 15.1 βρίσκεται ήδη στο λογαριασμό μας στη DigitalOcean και πλέον μπορούμε να δημιουργούμε droplets που βασίζονται σ' αυτό.Το custom image με το openSUSE Leap 15.1 βρίσκεται ήδη στο λογαριασμό μας στη DigitalOcean και πλέον μπορούμε να δημιουργούμε droplets που βασίζονται σ’ αυτό.

Επιλογή πλάνου για το υπό δημιουργία droplet.Επιλογή πλάνου για το υπό δημιουργία droplet.

Εισαγωγή hostname και tags για το droplet, καθώς κι ενεργοποίηση του μηχανισμού δημιουργίας νέου droplet.Εισαγωγή hostname και tags για το droplet, καθώς κι ενεργοποίηση του μηχανισμού δημιουργίας νέου droplet. Παρατηρήστε ότι χρειάζεται να υποδείξουμε κι ένα δημόσιο κλειδί SSH από αυτά που έχουμε στο λογαριασμό μας στη DigitalOcean, κι ας μην υπάρχει δυνατότητα αυτόματης εισαγωγής του στο υπό δημιουργία droplet. Περισσότερα επ’ αυτού διαβάστε στη συνέχεια.

Το νέο droplet, με openSUSE Leap 15.1, αρχικοποιείται.Το νέο droplet, με openSUSE Leap 15.1, αρχικοποιείται! Συγκίνηση.

Το πρώτο μας droplet με openSUSE Leap 15.1 είναι έτοιμο!Το πρώτο μας droplet με openSUSE Leap 15.1 είναι έτοιμο και πολύ χαιρόμαστε γι’ αυτό!

Εκτός από τις απομακρυσμένες συνδέσεις SSH, στο νέο μας droplet αποκτάμε πρόσβαση και με τη βοήθεια της κονσόλας που παρέχεται μέσω του λογαριασμού μας στη DigitalOcean.Εκτός από τις απομακρυσμένες συνδέσεις SSH, στο νέο μας droplet αποκτάμε πρόσβαση και με τη βοήθεια της κονσόλας που παρέχεται μέσω του λογαριασμού μας στη DigitalOcean.

Σύνδεση στο λογαριασμό του root, στο droplet με το openSUSE Leap 15.1, από την web console της DigitalOcean.Σύνδεση στο λογαριασμό του root, στο droplet με το openSUSE Leap 15.1, από την web console της DigitalOcean. Περιττό να σημειώσουμε ότι μπορούμε να συνδεόμαστε σ’ αυτό κι απομακρυσμένα, μέσω SSH. Ήδη παρατηρήσατε το δημόσιο IP του droplet, έτσι δεν είναι;

Τι πρέπει να γνωρίζετε

Πριν αρχίσετε να απολαμβάνετε το openSUSE Leap 15.1 και στο cloud της DigitalOcean, έχετε υπόψη τα ακόλουθα.

  • Τα QCOW2 images που δημιουργεί το Packer, χάρη στον απλό Ansible provisioner που εφαρμόζεται είναι πλήρως ενημερωμένα. Για την ακρίβεια, πλήρως ενημερωμένη είναι η εγκατάσταση του openSUSE Leap 15.1 εντός του image.
  • Η εγκατάσταση του Leap είναι σκοπίμως λιτή, ώστε να μη χρειάζεται ν’ ανεβάζουμε στη DigitalOcean μεγάλα αρχεία.
  • Στο σύστημα εντός του QCOW2 image υπάρχει φυσικά το account του root αλλά μόνον αυτό. Δεν υπάρχει λογαριασμός απλού χρήστη, στα droplet σας ωστόσο μπορείτε να προσθέτετε όσους θέλετε πανεύκολα, π.χ., με τη βοήθεια του YaST.
  • Το προκαθορισμένο password για τον root είναι topsecret, όμως τα απομακρυσμένα SSH logins είναι εφικτά μόνο με βάση το public key authentication. Αυτό σημαίνει ότι, αρχικά τουλάχιστον, σε ένα νέο droplet θα μπορείτε να συνδέεστε απομακρυσμένα μόνον από τα μηχανήματα –και συγκεκριμένα μόνον από τους λογαριασμούς χρηστών– από τους οποίους προέρχονται τα κλειδιά στον κατάλογο provisioners/ssh_keys. Αν για κάποιο λόγο χρειάζεται να κάνετε login στο λογαριασμό του root χωρίς public key authentication, χρησιμοποιήστε την κονσόλα για το αντίστοιχο droplet που παρέχεται από το web dashboard του λογαριασμού σας στη DigitalOcean.
  • Σύμφωνα με τις οδηγίες στο επίσημο documentation, τα custom images που ανεβάζουμε στο λογαριασμό μας πρέπει να είναι εφοδιασμένα με το cloud-init. Για λόγους απλότητας, αποφασίσαμε να φτιάξουμε custom image χωρίς το cloud-init. Μια τέτοια απόφαση, πάντως, έχει συνέπειες. Στην περίπτωσή μας, σημαίνει ότι τα droplet που δημιουργούμε τα διαχειριζόμαστε μόνοι μας, χωρίς δηλαδή συγκεκριμένες ευκολίες που παρέχονται από το web dashboard της DigitalOcean.

Έχετε τέλος υπόψη ότι η αποθήκευση custom images στη DigitalOcean δεν είναι δωρεάν. Το κόστος βέβαια είναι πολύ μικρό –για την ακρίβεια 5 cents του δολαρίου για κάθε gigabyte και ανά μήνα–, δεν είναι ωστόσο υποχρεωτικό να το καταβάλετε. Απλά ανεβάστε το custom image στο λογαριασμό σας, φτιάξτε όσα droplets θέλετε με βάση αυτό, μετά διαγράψτε το image κι αρχίστε να συμπεριφέρεστε σαν να μην το είχατε ποτέ.