Feature #487

Μηχανισμός επικοινωνίας API <-> Ganeti OS provider

Added by Vangelis Koukis about 13 years ago. Updated about 13 years ago.

Status:Closed Start date:05/10/2011
Priority:Medium Due date:
Assignee:Constantinos Venetsanopoulos % Done:

0%

Category:Cyclades Images Spent time: -
Target version:v0.4

Description

Για το deployment μηχανημάτων στον πραγματικό κόσμο, χρειάζεται να διερευνηθεί μηχανισμός επικοινωνίας/περάσματος παραμέτρων από το API στον Ganeti OS provider.
Υπάρχει μηχανισμός παραμέτρων, θα χρησιμοποιηθεί για διάφορα πράγματα που θα προκύψουν:
α) πώς ζητάω να φτιαχτεί VM από συγκεκριμένο image;
β) πώς βάζω δικό μου password;
γ) πώς βάζω δικά μου αρχεία [του API user] στο filesystem της νέας μηχανής;


Related issues

related to Synnefo - Feature #485: Επιβολή password κατά τη δημιουργία νέου μηχανήματος Closed 05/10/2011
blocks Synnefo - Feature #489: Δυνατότητα customization μηχανημάτων με βάση Images Closed 05/10/2011

History

#1 Updated by Constantinos Venetsanopoulos about 13 years ago

  • Target version set to v0.4

#2 Updated by Constantinos Venetsanopoulos about 13 years ago

  • Status changed from New to Feedback

Για να έχουμε επικοινωνία API <--> Ganeti OS Provider για την επιλογή συγκεκριμένου Image χρειάζονται αλλαγές σε 2 βασικούς άξονες:

1. Αλλαγή στον τρόπο που περνά πληροφορίες το Django Layer στο Ganeti αναφορικά με τα Images.
2. Αλλαγή στον τρόπο που γίνεται deploy ένα λειτουργικό σύστημα στο επίπεδο του Ganeti OS Provider.

Όσον αφορά στον πρώτο άξονα (1):

Μέχρι αυτή τη στιγμή οτιδήποτε και να επέλεγε ο χρήστης στον wizard του GUI, το Django Layer δεν περνούσε καμία πληροφορία σχετική με Image στο Ganeti. Κατά το VM creation, το Ganeti έφτιαχνε όλα τα καινούρια μηχανήματα με debootstrap (default OS provider). Έγιναν όλες οι αναγκαίες αλλαγές στο branch images-0.4, έτσι ώστε να εκμεταλλευτούμε το Ganeti OS Interface v20 και να μπορούμε να περάσουμε παραμέτρους στον OS provider. To Django Layer κατά το VM creation περνά πλέον στον OS provider τις παραμετρους img_id και img_passwd. Το img_id αντιστοιχεί σε μέρος του filename του Image που θα χρησιμοποιηθεί και το img_passwd αντιστοιχεί στο random password που κάνει generate το Django (και βλέπει ο χρήστης στο GUI) και πρέπει να γίνει inject στο Image. Για να γίνουν εφικτά τα παραπάνω, τροποποιήθηκε επίσης το Image model με πρόσθεση κατάλληλων πεδίων και προστέθηκαν νέα fixtures που αντιστοιχούν σε πραγματικά Images που υπάρχουν στο backend.

Όσον αφορά στον δεύτερο άξονα (2):

Μέχρι αυτή τη στιγμή ο μονάδικος OS provider ήταν ο ganeti-instance-debootstrap-0.9, ο οποίος όμως δεν χρησιμεύει για αυτό που θέλουμε να υλοποιήσουμε, γιατί το μόνο που κάνει είναι debootstrap σε ένα δεδομένο block device. Για να ξεπεραστεί το πρόβλημα κάνουμε extend τον OS provider Ganeti Instance Image ώστε να υποστηρίζει το ganeti-os-interface v20 και χρησιμοποιούμε αυτόν. Υποστηρίζοντας το API v20 μπορεί να χρησιμοποιήσει τις παραμέτρους που αναφέρθηκαν στο (1) και να διαλέξει κατάλληλο Image το οποίο θα κάνει deploy στη συνέχεια με τον κατάλληλο τρόπο.
Ο extended Ganeti Instance Image έχει υλοποιηθεί και εγκατασταθεί σε όλα τα nodes του ganeti cluster και επίσης ο κώδικας του έχει ανέβει στο: http://code.grnet.gr/git/gnt-instance-image

Για λόγους testing έχουν δημιουργηθεί 4 πραγματικά Images σε dump format (2 debian + 2 ubuntu).
Μετά το integration του branch images-0.4 αλλά και του Ganeti Instance Image, παρουσιάζονται στο χρήστη (GUI) τα διαθέσιμα Images και από αυτό που θα διαλέξει σηκώνεται το ανάλογο VM.

Όσον αφορά το (β) και (γ) του ticket:

(β): Το password περνάει στον OS provider ως παράμετρος
(γ): Το αρχείο μπορεί να περάσει και αυτό ως παράμετρος στον OS provider (αφού πρώτα έχει γίνει base64 encoded, όπως προτείνει και το OpenStack API)

Για όλα τα παραπάνω υπάρχει το αντίστοιχο documentation εδώ:
http://trac.cslab.ece.ntua.gr:8081/cloud/wiki/DesignImplImage

#3 Updated by Constantinos Venetsanopoulos about 13 years ago

Έχει προστεθεί και το αντίστοιχο documentation στο README.deploy

#4 Updated by Vangelis Koukis about 13 years ago

  • Status changed from Feedback to Closed

Έχει σχεδιαστεί, υλοποιηθεί και τεκμηριωθεί μηχανισμός επικοινωνίας από το API implementation προς τον image provider του Ganeti μέσω OS provider parameters, οπότε αυτό το ticket κλείνει.

Για έξτρα λειτουργικότητα βασισμένη στο μηχανισμό που υλοποιήθηκε εδώ -- π.χ. εισαγωγή αρχείων του χρήστη σε μηχάνημα -- θα ανοίξουν νέα tickets.

Also available in: Atom PDF