Dieses Repository behandelt die Installation von GitHub, VirtualBox, Vagrant und Visual Studio Code.
Die nachstehende Dokumentation wurde von Michael Blickenstorfer im Rahmen des Moduls M300 (Plattformübergreifende Dienste in ein Netzwerk integrieren) erarbeitet und zeigt alle Schritte auf, die es zur Einrichtung einer vollständig funktionsfähigen Toolumgebung benötigt.
Datum | Änderungen | Kürzel |
---|---|---|
29.08.2018 | Erstellung der Datei & erste Änderungen eingeführt | MBL |
08.09.2018 | Einleitung, Voraussetzungen, Inhaltsverzeichnis & Kapitel 1 erarbeitet | MBL |
09.09.2018 | Kapitel 2, 3, 4, 5 und 6 erarbeitet | MBL |
10.09.2018 | Kapitel 7 erarbeitet und kleinere Ergänzungen an den anderen Kapitel vorgenommen | MBL |
10.09.2018 | Bilder bzw. Icons eingefügt | MBL |
20.10.2018 | Verknüpfungen angepasst | MBL |
30.10.2018 | Kleinere Verbesserungen vorgenommen | MBL |
... | ... | ... |
- macOS High Sierra (Version 10.13.6)
- GitHub Account
- Git-OSX-Installer (Version 2.15.0)
- VirtualBox (Version 5.2.18)
- Vagrant (Version 2.1.4)
- Visual Studio Code (Version 1.26.1)
- 01 - GitHub Account
- 02 - Git Client
- 03 - VirtualBox
- 04 - Vagrant)
- 05 - Visual Studio Code
- 06 - Fazit / Reflexion
- 07 - Quellenverzeichnis
Als erster Schritt muss ein GitHub-Account eingerichtet werden. Dieser dient uns später als "Cloud-Speicher" unserer Dokumentation und weiteren Dateien.
Folgende Arbeiten müssen gemacht werden:
- Auf www.github.com ein Benutzerkonto erstellen (Angabe von Username, E-Mail und Passwort)
- E-Mail zur Verifizierung des Kontos bestätigen und anschliessend auf GitHub anmelden
- Anmelden unter www.github.com
- Innerhalb der Willkommens-Seite auf Start a project klicken
- Unter Repository name einen Name definieren (z.B. M300)
- Optional: kurze Beschreibung eingeben
- Radio-Button bei Public belassen
- Haken bei Initialize this repository with a README setzen
- Auf Create repository klicken
- Terminal öffnen
- Folgenden Befehl mit der Account-E-Mail von GitHub einfügen:
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
- Neuer SSH-Key wird erstellt:
Generating public/private rsa key pair.
- Bei der Abfrage, unter welchem Namen der Schlüssel gespeichert werden soll, die Enter-Taste drücken (für Standard):
Enter a file in which to save the key (~/.ssh/id_rsa): [Press enter]
- Nun kann ein Passwort für den Key festgelegt werden. Ich empfehle dieses zu setzen und anschliessend dem SSH-Agent zu hinterlegen, sodass keine erneute Eingabe (z.B. beim Pushen) notwendig ist:
Enter passphrase (empty for no passphrase): [Passwort] Enter same passphrase again: [Passwort wiederholen]
- Terminal öffnen
- SSH-Agent starten:
$ eval "$(ssh-agent -s)" Agent pid 931
- Ab Version macOS High Sierra 10.12.2 muss das
~/.ssh/config
File angepasst werden, damit SSH-Keys automatisch dem SSH-Agent hinzugefügt werden:$ sudo nano ~/.ssh/config Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
- Nun muss der Schlüssel dem Agent nur noch hinzugefügt werden:
$ ssh-add -K ~/.ssh/id_rsa
- Der SSH-Key muss nun nur noch kopiert und anschliessend dem GitHub-Account hinzugefüg werden (siehe "SSH-Key hinzufügen"):
$ pbcopy < ~/.ssh/id_rsa.pub # Kopiert den Inhalt der id_rsa.pub Datei in die Zwischenablage
- Anmelden unter www.github.com
- Auf Benutzerkonto klicken (oben rechts) und den Punkt Settings aufrufen
- Unter den Menübereichen auf der linken Seite zum Abschnitt SSH und GPG keys wechseln
- Auf New SSH key klicken
- Im Formular unter Title eine Bezeichnung vergeben (z.B. MB SSH-Key)
- Den zuvor kopierten Key mit CTRL + V einfügen und auf Add SSH key klicken
- Der Schlüssel (SSH-Key) sollte nun in der übergeordneten Liste auftauchen
Weiter Infos zu SSH-Keys in Zusammenhang mit GitHub und dem SSH-Agent findet man unter:
GitHub-Help: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
Wikipedia: https://en.wikipedia.org/wiki/Ssh-agent
Damit die Arbeiten lokal auf dem eigenen PC erfolgen können, muss der sogenannte "Git Client" installiert werden. Dieser ermöglicht uns, Cloud-Repositories zu klonen, zu pullen (herunteraden) oder ein lokales Repository zu pushen (hochladen).
Hierzu müssen folgende Schritte durchgeführt werden:
- Für die Client-Installation muss der Installer unter dieser Webseite heruntergeladen werden (Version 2.15.0)
- Die Installation erfolgt GUI-basiert, jedoch standard (ohne speziellen Anpassungen). Daher wird an dieser Stelle auf eine Erklärung verzichtet.
- Sobald der Vorgang abgeschlossen wurde, kann mit der Konfiguration fortgefahren werden.
- Terminal öffnen
- Git konfigurieren mit Informationen des GitHub-Accounts:
$ git config --global user.name "<username>" $ git config --global user.email "<e-mail>"
- Konfiguration abgeschlossen
- Zu Testzwecken soll ein Repository geklont werden. Dazu sind folgende Befehle notwendig:
- Terminal öffnen
- Repository klonen:
$ git clone https://github.com/mc-b/devops
- In das devops-Verzeichnis wechseln:
$ cd devops
- Repository aktualisieren und Status anzeigen:
$ git pull Already up to date. $ git status Your branch is up to date with 'origin/master'.
- Die Statusmeldung soll dabei mitteilen, dass das lokale Repository mit dem Originalen übereinstimmt.
- Terminal öffnen
- Ordner für Repository im gewünschten Verzeichnis erstellen:
$ cd Wohin\auch\immer $ mkdir MeinLokalesRepository
- Repository mit SSH klonen (siehe Webseite des Repositorys unter "Clone or download"):
$ git clone [email protected]:TacoTaco47/M300.git Cloning into 'M300'...
- Repository aktualisieren und Status anzeigen:
$ git pull Already up to date.
- Terminal öffnen (nachdem Teile bzw. Dateien des lokalen Repositorys geändert wurden)
- In das entsprechende Verzeichnis des Repository gehen:
$ cd Pfad\zu\meinem\Repository
- Dateien dem Upload hinzufügen:
$ git add -a.
- Den Upload commiten:
$ git commit -m "Mein Kommentar"
- Schliesslich den Upload pushen:
$ git push
- Nun sollte der Master-Branch des Repositorys ebenfalls aktualisiert sein
Dieser Abschnitt zeigt die Handhabung von Git-Befehlen auf. Mit den nachfolgenden Kommandos pusht man das (geänderte) Repository zu seinem GitHub-Repository.
Wichtig: Die Befehle müssen innerhalb des lokalen Repositorys ausgeführt werden!
$ cd Pfad\zu\meinem\Repository # Zum lokalen GitHub-Repository wechseln
$ git status # Geänderte Datei(en) werden rot aufgelistet
$ git add -a # Fügt alle Dateien zum "Upload" hinzu
$ git status # Der Status ist nun grün > Dateien sind Upload-bereit (Optional)
$ git commit -m "Mein Kommentar" # Upload wird "commited" > Kommentar zu Dokumentationszwecken ist dafür notwendig
$ git status # Dateien werden nun als "zum Pushen bereit" angezeigt
$ git push #Upload bzw. Push wird durchgeführt
Nun widmen wir uns der Virtualisierung von Computersystemen. Für den Betrieb von solchen Maschinen bzw. Computern stehen zahlreiche Virtualisierungsanwendungen zur Verfügung. Eine davon ist VirtualBox. In diesem Kapitel richten wir eine einfache VM (Virtuelle Maschine) mit VirtualBox ein. Also ganz traditionell und wie sich im späteren Verlauf zeigt, auch eine sehr aufwendige Arbeit.
Folgende Arbeiten müssen gemacht werden:
- Zuerst muss die VirtualBox-Anwendung installiert werden. Der Installer lässt sich hier herunterladen.
- Auf "Download VirtualBox 5.2" klicken und bei Abschnitt "VirtualBox 5.2.19 platform packages" dem OS X hosts Link folgen (Datei wird heruntergeladen)
- Die Installation erfolgt GUI-basiert, jedoch standard (ohne speziellen Anpassungen). Daher wird an dieser Stelle auf eine Erklärung verzichtet.
- Sobald der Vorgang abgeschlossen wurde, kann mit dem Herunterladen der ISO-Datei und der VM-Erstellung fortgefahren werden.
Für das weitere Vorgehen wird eine System-Abbild-Datei benötigt. Dazu laden wir in unserem Fall das Image von Ubuntu Desktop 16.04.05 herunter. Wie das genau funktioniert, wird nachfolgend beschrieben:
- Das Systemabbild (ISO-Image) über diesen Link herunterladen
- Datei im gewünschten Verzeichnis ablegen (damit das Image wiederverwendet werden kann)
- Allen Anweisung in Abschnitt "VM erstellen" folgen
- VirtualBox starten
- Links oben, innerhalb der Anwendung, auf
Neu
klicken - Im neuen Fenster folgende Informationen eintragen:
- Name:
M300_Ubuntu_16.04_Desktop
- Typ:
Linux
- Version:
Ubuntu (64-bit)
- Speichergrösse:
2048 MB
- Platte:
[X] Festplatte erzeugen
- Name:
- Auf
Erzeugen
klicken - Weiteres Fenster öffnet sich, folgende Informationen eintragen:
- Dateipfad: standard
- Dateigrösse:
10.00 GB
- Dateityp der Festplatte:
VMDK (Virtual Maschine Disk)
- Storage on physical hard disk:
dynamisch alloziert
- Ebenefalls auf
Erzeugen
klicken, dann im Hauptmenü die VM anwählen (blau markiert) und den PunktÄndern
aufrufen - Im Abschnitt
Massenspeicher
den SATA-Controller anwählen und auf das CD+Symbol klicken - Unter
Medium auswählen
das zuvor heruntergeladene Systemabbild (ISO-Datei) anwählen - Alle Änderungen speichern und die VM starten
- Den Installationsanweisungen der OS-Installation folgen und anschliessend zu Abschnitt "VM einrichten" gehen
Die virtuelle Maschine (VM) sollte nun soweit betriebsbereit sein, sprich der Zugriff auf den Home-Desktop ist möglich.
- Ubuntu-VM starten
- Anmelden und Terminal öffnen
- Paketliste neu einlesen und Pakete aktualisieren:
$ sudo apt-get update #Paketlisten des Paketmanagement-Systems "APT" neu einlesem $ sudo apt-get update #Installierte Pakete wenn möglich auf verbesserte Versionen aktualisieren $ sudo reboot #System-Neustart durchführen
- Software Controlcenter "Synaptic" installieren:
$ sudo apt-get install synaptic
- Nach erfolgreicher Installation in der Suche nach "Synaptic Package Manager" suchen und diesen starten
- Innerhalb des Managers nach "apache" (Webserver-Programm) suchen und dieses (inkl. aller Abhängigkeiten) installieren
- System-Neustart durchführen:
$ sudo reboot
- Gängiger Web-Browser (z.B. Firefox) starten und prüfen, ob der Standard-Content des Webservers unter "http://127.0.0.01:80" (localhost) erreichbar ist
- Browser-Fenster schliessen und VM wieder herunterfahren/stoppen
- Mit dem Kapitel 4 (Vagrant) fortfahren
Kapitel 3 (VirtualBox) sollte uns zeigen, dass das Bereitstellen virtueller Systeme in der konventionellen Art lange dauert und umständlich sein kann. Abhilfe bietet hier Vagrant. Vagrant ist eine freie Ruby-Anwendung zur Erstellung und Verwaltung virtueller Maschinen und ermöglicht einfache Softwareverteilung.
Nachfolgend sind einzelne Schritte zur Einrichtung von Vagrant dokumentiert:
- Die Anwendung in der Version 2.1.4 kann auf der offiziellen Webseite heruntergeladen werden.
- Die Installation erfolgt, wie alle anderen Anwendungen, GUI-basiert, jedoch standard (ohne speziellen Anpassungen). Daher wird an dieser Stelle ebenfalls auf eine Erklärung verzichtet.
- Sobald der Vorgang abgeschlossen wurde, kann mit dem Erstellen einer VM fortgefahren werden.
- Terminal öffnen
- In gewünschtem Verzeichnis einen neuen Ordner für die VM anlegen:
$ cd Wohin\auch\immer $ mkdir MeineVagrantVM $ cd MeineVagrantVM
- Vagrantfile erzeugen, VM erstellen und entsprechend starten:
$ vagrant init ubuntu/xenial64 #Vagrantfile erzeugen $ vagrant up --provider virtualbox #Virtuelle Maschine erstellen & starten
- Die VM ist nun in Betrieb (erscheint auch in der Übersicht innerhalb von VirtualBox) und kann via SSH-Zugriff bedient werden:
$ cd Pfad\zu\meiner\Vagrant-VM #Zum Verzeichnis der VM wechseln $ vagrant ssh #SSH-Verbindung zur VM aufbauen #Anschliessend können ganz normale Bash-Befehle abgesetzt werden: $ ls -l /bin #Bin-Verzeichnis anzeigen $ df -h #Freier Festplattenspeicher $ free -m #Freier Arbeitsspeicher
- VM über VirtualBox-GUI ausschalten
Schlussfolgerung: Eine VM lässt sich mit Vagrant eindeutig schneller und unkomplizierter erstellen!
- Terminal öffnen
- In gewünschtem Verzeichnis einen neuen Ordner für die VM anlegen:
$ cd Wohin\auch\immer $ mkdir MeineVagrantVM $ cd MeineVagrantVM
- Vagrantfile erzeugen, VM erstellen und entsprechend starten:
$ vagrant box add http://[HOST]/vagrant/ubuntu/xenial64.box --name ubuntu/xenial64 #Vagrant-Box vom Netzwerkshare hinzufügen $ vagrant init ubuntu/xenial64 #Vagrantfile erzeugen $ vagrant up --provider virtualbox #Virtuelle Maschine erstellen & starten
- Die VM ist nun in Betrieb (erscheint auch in der Übersicht innerhalb von VirtualBox) und kann via SSH-Zugriff bedient werden:
$ cd Pfad\zu\meiner\Vagrant-VM #Zum Verzeichnis der VM wechseln $ vagrant ssh #SSH-Verbindung zur VM aufbauen #Anschliessend können ganz normale Bash-Befehle abgesetzt werden: $ ls -l /bin #Bin-Verzeichnis anzeigen $ df -h #Freier Festplattenspeicher $ free -m #Freier Arbeitsspeicher
- VM über VirtualBox-GUI ausschalten
Schlussfolgerung: Keine erheblichen Unterschiede zum ersten Teil (ohne Share) und daher auch nicht wirklich kompliziert.
Um den Automatisierungsgrad von Vagrant im Rahmen dieser Dokumentation etwas besser hervorzuheben, richten wir eine VM, dass sie direkt mit einem vorinstallierten Apache-Webserver startet. Dazu können wir im Vagrantfile den Code etwas leicht abändern und direkt auf Bash-Ebene mit einfachen Befehlen arbeiten.
Nachfolgend wird die VM mit einem bereits abgeänderten File bzw. VM aus dem devops-Repository erstellt:
- Terminal öffnen
- In das devops-Verzeichnis (\devops\vagrant\web) wechseln:
$ cd Pfad\zum\dvops-Verzeichnis\devops\vagrant\web
- VM erstellen und starten:
$ vagrant up
- Webbrowser öffnen und prüfen, ob der Standard-Content des Webservers unter "http://127.0.0.01:80" (localhost) erreichbar ist
- Im Ordner
\web
die Hauptseiteindex.html
editieren bzw. durch eine andere ersetzen (z.B. HTML5up-Themplate) und das Resultat überprüfen - Abschliessend kann die VM wieder gelöscht werden:
$ vagrant destroy -f
- Vagrant ist nun komplett einsatzfähig!
Bis hierhin haben wir soweit alles aufgesetzt und installiert. Nun möchten wir für effizienteres Arbeiten eine "Entwicklungsumgebung" aufbauen, die es uns ermöglicht, alle lokalen Repositories an einem Ort zu verwalten und die dazugehörigen Dateien zu bearbeiten. Die Lösung hierzu ist: Visual Studio Code Dieser freie Quelltext-Editor von Microsoft, ermöglicht uns, unsere Workflows besser zu gestalten und damit die Arbeit um einiges leichter zu machen.
Für die Einrichtung muss man sich nach den nachfolgenden Anweisungen orientieren:
- Unter dieser Webseite lässt sich der Installer (Version 1.26.1) herunterladen.
- Auf "Download for Mac" klicken und warten, bis das Fenster zum Herunterladen erscheint. Anschliesend den Download des Installers starten
- Die Installation erfolgt auch hier GUI-basiert. Wiederum aber standard (ohne speziellen Anpassungen), sodass an dieser Stelle auf eine Erklärung ebenfalls verzichtet wird .
- Sobald der Vorgang abgeschlossen wurde, kann mit dem Herunterladen der ISO-Datei und der VM-Erstellung fortgefahren werden.
Wir fügen dem Editor drei wichtige Extensions hinzu:
- Markdown All in One (Version 1.6.0 / von Yu Zhang)
- Vagrant Extension (Version 0.5.0 / von Marco Stanzi)
- vscode-pdf Extension (Version 0.3.0 / von tomiko1207)
Dazu müssen folgende Anweisungen befolgt werden:
- Visual Studio Code öffnen
- Die Tastenkombination
CTRL
+SHIFT
+X
drücken und in der Sucheleiste die erwähnten Extensions suchen - Auf
Install
klicken und anschliessend aufReload
, um die Extension in den Arbeitsbereich zu laden. - Nun können die Extensions angewendet werden. Für Markdown ist diese Liste sehr hilfreich.
Damit keine Dateien der virtuellen Maschinen dem Cloud-Repository hinzugefügt werden (da Dateien zu gross), müssen diese in den Einstellungen "exkludiert" werden:
- Visual Studio Code öffnen
- Unter
Code
>Preferences
>Settings
bei den 3 Punkten (...) aufOpen setting.json
klicken - Zu diesem Abschnitt gehen:
// Configure glob patterns for excluding files and folders. For example, the files explorer decides which files and folders to show or hide based on this setting. Read more about glob patterns here. (...)
- Nachstehenden Code einfügen:
// Konfiguriert die Globmuster zum Ausschließen von Dateien und Ordnern. "files.exclude": { "**/.git": true, "**/.svn": true, "**/.hg": true, "**/.vagrant": true, "**/.DS_Store": true },
- Änderungen speichern und die Einstellungen schliessen
Nun sollten keine Dateien mit den Endungen .git / .svn / .hg / .vagrant / .DS_store hochgeladen werden. Wie man die Änderungen innerhalb von Visual Studio Code richtig pusht, wird im nachfolgenden Abschnitt erklärt.
- Visual Studio Code öffnen
- Änderungen an entsprechenden Dateien des lokalen Repositorys vornehmen
- In der linken Leiste das Symbol mit einer "1" aufrufen
- Unter dem Abschnitt Changes die betroffenen Files bezüglich ihres Changes "stagen" (Stage Changes)
- Nachricht hinterlegen (Message) und Haken (Commit) setzen
- Bei den 3 Punkten (...) die Funktion Push aufrufen
- Warten, bis Dateien vollständig gepusht wurden
Mir persönlich hat die Einrichtung der Tool-Umgebung sehr viel Freude bereitet. Besonders das Erarbeiten der Dokumentation fand ich interessant, da ich bis anhin den Funktionsumfang von GitHub in Kombination mit Markdown nicht kannte. Da für mich alles sehr neu war, musste ich mich in einer ersten Phase erst einmal in die einzelnen Bereiche einarbeiten und Schritt für Schritt die Anweisungen befolgen. Grösstenteils hatte ich dabei keine Mühe und ich konnte bereits in geraumer Zeit einen Grossteil der Aufgaben abschliessen. Trotz gelegentlichen unklaren Passagen innerhalb der uns zur Verfügung gestellten «Doku», konnte ich diese Hindernisse überwinden und mein bis jetzt erlangtes Fachwissen voll und ganz einsetzen. Das einzig nennenswerte Problem stellte die Erstellung des SSH-Keys und die anschliessende Verwendung innerhalb der Visual Studio Code Applikation dar. Da ich (trotz Anweisungen) meinen SSH-Key mit einem Passwort schützen wollte – denn die Sicherheit geht vor(!), hatte ich anschliessend Probleme, wenn ich Änderungen direkt in der Visual Studio Code Umgebung in das Cloud-Repository pushen wollte. In einem Artikel der GitHub-Hilfeseite wird dies jedoch empfohlen und so wurde mir glücklicherweise aufgezeigt, wie man diese Problematik mit dem Hinzufügen des Keys an den SSH-Agent vollständig umgehen kann. Dadurch konnte ich die Umgebung vollständig einrichten und mein Vorgehen entsprechend dokumentieren.
Für zukünftige Arbeiten werde ich GitHub wohl wieder als unterstützende Hilfe bei der Dokumentation von gemachten Arbeiten verwenden, da der Umfang sehr gross ist und auch der visuelle Aspekt meiner Ansicht nach perfekt ist: ordentlich, modern und sauber!
Die obigen Anleitungen habe ich mit mehreren Quellen erarbeitet und dokumentiert. Das nachfolgende Quellverzeichnis soll Aufschluss über die verwendeten Quellen geben und ein Zeichen der Dankbarkeit und Anerkennung sein.
TBZ Repository Server (Toolumgebung aufsetzen)
- Diese Dokumentation basiert grundsätzlich auf den Grundlagen nachfolgender Anweisungen, die durch die Schule bereitgestellt wurden: http://iotkit.mc-b.ch/tbz/
GitHub
-
Für die Formatierung nahm ich das Markdown-Cheatsheet zur Hilfe: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
-
Bei Code- und Syntax-Highlighting half mir folgende Übersicht: https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
-
Das SSH-Key-Problem löste ich mit folgendem Hilfe-Artikel: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/