= Υπολογιστική Νέφους και Υπηρεσίες :description: ΑΣΚΗΣΗ 2020 :keywords: Cloud, swarm :data-uri: :toc: right :toc-title: Πίνακας περιεχομένων :toclevels: 4 :source-highlighter: coderay :icons: font :sectnums: .ΕΡΓΑΣΤΗΡΙΟ ΜΑΘΗΜΑΤΟΣ [NOTE] **** [.text-center] *«Υπολογιστική Νέφους και Υπηρεσίες»* [.text-center] _ΑΣΚΗΣΗ 2020_ **** [.lead] Η άσκηση περιλαμβάνει τη δημιουργία ενός εικονικού εργαστηρίου(vlab) σε περιβάλλον *docker swarm* που θα εκτελεί αυτόματα τις λειτουργίες που διαθέτει. == Δημιουργία εικονικού εργαστηρίου *Κάθε vlab θα διαθέτει:* * [*] δικό του δίκτυο * [*] web περιβάλλον για προβολή των αποτελεσμάτων και δυνατότητα download * [ ] χώρο αποθήκευσης (προαιρετικά) * [*] Αυτόματη διαδικασία εκτέλεσης των υπηρεσιών μέσω make (https://git.swarmlab.io:3000/swarmlab/examples-mpi/src/branch/master/swarmlab[Παράδειγμα]) * [*] μία υπηρεσία ανά container * [*] replicated mode (https://docs.docker.com/compose/compose-file/#deploy) * [*] Containers/Replica θα "τρέχουν" μόνο σε workers === Παράδειγμα .Παράδειγμα Vlab και τρόπου εκτέλεσης της υπηρεσίας image:swarmlab-network.png[alt="Vlab Network"] Παράδειγμα για τη δημιουργία του δικτύου: http://docs.swarmlab.io/lab/DockerSwarm/swarm-deploy.adoc.html[Eργαστήριο Deploy] == Παράδοση εργασίας *Παράδοση εργασίας:* * [*] Το κείμενο της εργασίας θα είναι σε μορφή *asciidoc* * [*] Θα περιέχει *Dockerfile* για την δημιουργία των images * [*] Θα περιέχει *Stack Yaml File* για Deploy της υπηρεσίας * [*] Θα περιέχει *README* file με πληροφορίες σχετικά με το εικονικό εργαστήριο και τις υπηρεσίες/εργαλεία που χρησιμοποιήθηκαν * [*] Θα περιέχει *INSTALL* file με πληροφορίες σχετικά με την εγκατάσταση του εικονικού εργαστηρίου * [*] Θα περιέχει *DOC* file/dir με πληροφορίες σχετικά με την χρήση του εικονικού εργαστηρίου * [*] Θα περιέχει *Demo* site για την εκτέλεση των διαθέσιμων υπηρεσιών .Πληροφορία [NOTE] ==== Το κείμενα θα είναι *όλα* σε μορφή asciidoc ή markdown (Παραδείγματα: http://docs.swarmlab.io/Howtos/asciidoc/install-asciidoc.adoc.html#cheat-useadoc[1], http://docs.swarmlab.io/Howtos/asciidoc/QuickStart.adoc.html#_copy_paste_asciidoc_source[2], http://docs.swarmlab.io/Howtos/asciidoc/AsciiDocSyntaxQuickReference.adoc.html[Reference]) ==== .Git [NOTE] ==== Ολα τα αρχεία θα πρέπει να "ανέβουν" σε υπηρεσία git * https://git.swarmlab.io:3000 - Προτείνεται * https://about.gitlab.com/ - Δεύτερη επιλογή * https://github.com/ ==== == Projects *Projects για υλοποίηση:* .Επιλογή [NOTE] ==== Η επιλογή project ανα ομάδα πρέπει να πραγματοποιηθεί μέχρι *03.05* ==== === Katex https://en.wikipedia.org/wiki/KaTeX[wikipedia] * Katex - https://en.wikipedia.org/wiki/KaTeX, https://en.wikipedia.org/wiki/Mathematical_notation ** https://github.com/KaTeX/KaTeX ** https://katex.org/#demo === wordpress * wordpress ** https://github.com/gabidavila/docker-wordpress-ssl-nginx-mysql === mongo replicated * mongo replicated - https://en.wikipedia.org/wiki/MongoDB, https://github.com/mongodb/mongo/wiki/Replication-Internals , https://en.wikipedia.org/wiki/NoSQL ** https://www.xosofox.de/2017/06/running-mongodb-as-a-replicaset-in-docker/ ** https://www.sohamkamani.com/blog/2016/06/30/docker-mongo-replica-set/#setting-up-replication === mysql replicated * mysql replicated - https://en.wikipedia.org/wiki/Multi-master_replication ** https://github.com/gritt/docker-mysql-replication ** https://hub.docker.com/r/actency/docker-mysql-replication === asciidoc + online editor * asciidoc + online editor - https://en.wikipedia.org/wiki/AsciiDoc, https://en.wikipedia.org/wiki/DocBook ** https://github.com/bodiam/awesome-asciidoc ** https://github.com/asciidoctor/docker-asciidoctor === collaborative LaTeX editor * collaborative LaTeX editor - https://en.wikipedia.org/wiki/LaTeX ** https://github.com/overleaf/overleaf === Realtime database backend * Realtime database backend - https://en.wikipedia.org/wiki/Operational_transformation ** https://github.com/share/sharedb === collaborative editor (like google docs) * collaborative editor - https://en.wikipedia.org/wiki/CodeMirror ** https://github.com/hectorj2f/codemirror-dockerhttps://github.com/jitsi/docker-jitsi-meet ** https://codemirror.net/ ** https://codemirror.net/mode/dockerfile/ === hadoop * hadoop - https://en.wikipedia.org/wiki/Apache_Hadoop ** https://github.com/big-data-europe/docker-hadoop ** https://hub.docker.com/r/sequenceiq/hadoop-docker/ ** https://www.alibabacloud.com/blog/setup-a-single-node-hadoop-cluster-using-docker_595278 === collaborative eclass meeting chat * collaborative eclass meeting chat - https://en.wikipedia.org/wiki/Jitsi ** https://github.com/jitsi/docker-jitsi-meet === collaboration solution * collaboration solution - https://en.wikipedia.org/wiki/Mattermost ** https://mattermost.com/mattermost-vs-slack/ ** https://github.com/mattermost/mattermost-docker ** https://hub.docker.com/r/jasl8r/mattermost === R and Octave (statistical computing and graphics) * R & Octave - https://en.wikipedia.org/wiki/R_(programming_language), https://en.wikipedia.org/wiki/GNU_Octave ** https://github.com/INWTlab/r-docker ** https://www.r-project.org/ ** https://www.gnu.org/software/octave/ === Ruby, php and Node.js * Ruby, php and Node.js ** https://hub.docker.com/r/ethanw93/docker-ruby-php-node/ ** https://github.com/dsferruzza/docker-php-node-ruby-build/blob/master/Dockerfile === java * java ** https://github.com/docker-java/docker-java === phonegap cordova * phonegap cordova - https://en.wikipedia.org/wiki/Apache_Cordova ** https://hub.docker.com/r/webratio/phonegap/ ** https://github.com/idotta/docker-phonegap ** https://github.com/oren/docker-cordova ** https://github.com/walterwhites/docker-cordova === visualization software * Graphviz + PlantUML - https://en.wikipedia.org/wiki/PlantUML, https://en.wikipedia.org/wiki/Unified_Modeling_Language, https://en.wikipedia.org/wiki/Graphviz ** https://github.com/plantuml/plantuml-server ** https://github.com/emfloyd2/docker-graphviz ** https://github.com/omerio/graphviz-server === collaboration platform * Nextdloud (similar to Dropbox, Office 365 or Google Drive) - https://en.wikipedia.org/wiki/Nextcloud, ** https://github.com/nextcloud/docker/tree/63438ef792fdedd4ceb80664d22391aca21f6bd1 ** https://github.com/nextcloud/docker == Q&A [qanda] Το project υλοποιείται σε ομάδες?:: Ναι. Είναι οι ομάδες που έχουμε ήδη δημιουργήσει Εγώ δεν βρήκα ομάδα. Τι κάνω?:: Προσπάθησε να ενταχθείς σε μία ομάδα και ενημέρωσε μέσω εμαιλ για την ομάδα που θα συμμετέχεις. Σε περίπτωση που δεν είναι αυτό δυνατό τότε χρησιμοποίησε το *docker-compose* για να δημιουργήσεις το project που θα επιλέξεις σε ένα μηχάνημα. Μπορώ να υλοποιήσω κάποιο άλλο project εκτός λίστας?:: Ναι. Αρκεί *να μην είναι "stand alone application".* To project πρέπει να υλοποιηθεί σύμφωνα με τις προδιαγραφές που περιγράφονται και για τα υπόλοιπα. Δεν γνωρίζω asciidoc θα χρειαστεί χρόνο για να το μάθω?:: Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 5 λεπτά και σε περίπτωση που θέλεις κάτι ακόμη πιο απλό γράψε σε markdown - online Editor: https://stackedit.io/app[markdown], https://asciidoclive.com/edit/scratch/1[asciidoc] Δεν γνωρίζω git θα χρειαστεί χρόνο για να το μάθω?:: Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 10 λεπτά - Βοήθεια: http://docs.swarmlab.io/SwarmLab-HowTos/HowTo-gitea.adoc.html[Gitea], https://classic.scottr.org/presentations/git-in-5-minutes/[Git In Five Minutes]