{"id":47,"date":"2021-01-10T22:18:30","date_gmt":"2021-01-10T21:18:30","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=47"},"modified":"2021-02-03T12:45:06","modified_gmt":"2021-02-03T11:45:06","slug":"vagrant","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2021\/vagrant\/","title":{"rendered":"Vagrant"},"content":{"rendered":"<h1>Gliederung<\/h1>\n<p>1. Definition<br \/>\n2. Installation und Konfiguration<br \/>\n3. Abgrenzung \/ Vergleich<br \/>\n4. Vor- und Nachteile<br \/>\n5. Demonstration<\/p>\n<h1>Definition<\/h1>\n<p>Vagrant ist ein Open-Source-Tool (MIT-Lizenz) zum Erstellen und Verwalten von virtuellen Maschinen. Es wurden von Mitchell Hashimoto und John Bender entwickelt. Die Steuerung von Vagrant erfolgt \u00fcber eine Shell.<\/p>\n<p>Es kommt ein einziger konsistenter Workflow zum Einsatz. Somit legt Vagrant den Fokus auf Automatisierung. Die Zeit f\u00fcr die Einrichtung virtueller Umgebungen wird deutlich verk\u00fcrzt, da bestehende Vorlagen genutzt werden k\u00f6nnen. Somit kann die Produktivit\u00e4t und Flexibilit\u00e4t sowohl im betrieblichen als auch im privaten Umfeld gesteigert werden.<\/p>\n<p>Eine virtuelle Maschine ist die Softwareimplementierung eines Computers mit einer virtuellen Festplatte und einer CPU. Ein vollst\u00e4ndiges Betriebssystem kann durch eine Virtualisierungssoftware ausgef\u00fchrt werden. Der Computer, auf welchem die Software ausgef\u00fchrt wird, ist das Hostsystem. Das Gastsystem ist die virtuelle Maschine, die durch die Virtualisierungssoftware bereitgestellt wird. Aus Sicht des Hostsystems werden alle Ressourcen des Gastes von der Virtualisierungssoftware verwendet.<\/p>\n<p>Durch Boxen werden Vorlagen f\u00fcr die virtuellen Maschinen bereitgestellt. Diese k\u00f6nnen lokal vorhanden sein oder aus dem Internet geladen werden.<\/p>\n<p>Die von Vagrant erstellten virtuellen Maschinen werden mittles Virtualisierungssoftware wie VirtualBox, VMware oder AWS bereitgestellt. Im Rahmen des Projektes wird mit VirtualBox gearbeitet. VirtualBox ist Open-Source (GPLv2-Lizenz). Das Erweiterungspaket von VirtualBox verf\u00fcgt \u00fcber eine sparte Lizenz, wird jedoch f\u00fcr die Verwendung von Vagrant nicht ben\u00f6tigt. Wurde die verwendete Box jedoch mit dem Erweiterungspaket erstellt, so muss es auch installiert sein.<\/p>\n<p>Vagrant ist in der Programmiersprache Ruby geschrieben. Diese kombiniert Teile der Sprachen Perl, Smalltalk, Eiffel, Ada und Lisp. Es handelt sich um eine dynamisch typisierte objektorientierte Skriptsprache.<\/p>\n<h1>Installation und Konfiguration<\/h1>\n<h2>Installation<\/h2>\n<p>Die Installation von Vagrant ist unter Windows 10 und Linux Distributionen recht einfach und erfolgt in zwei Schritten.<br \/>\nDamit Vagrant die VM erzeugen und starten kann wird ein Hypervisor ben\u00f6tigt.<br \/>\nStandardm\u00e4\u00dfig wird daf\u00fcr Oracle VirtualBox verwendet.<br \/>\nAuf Debian Linux Systemen kann dieser Schritt mit:<br \/>\n<code>sudo apt update &amp;&amp; sudo apt install VirtualBox <\/code><br \/>\nausgef\u00fchrt werden.<\/p>\n<p>Sobald ein Hypervisor installiert ist, kann man entweder auf die leicht veraltete Version (2.0.2 bei Ubuntu bionic; 2.2.6 bei Ubuntu Focal) aus den normalen Package Management System zur\u00fcckgreifen oder das Paket mit curl von der offiziellen Seite herunterladen:<br \/>\n<code>curl -O https:\/\/releases.hashicorp.com\/vagrant\/2.2.14\/vagrant_2.2.14_x86_64.deb<\/code><br \/>\nF\u00fcr die aktuellste Version muss leider h\u00e4ndisch auf der Webseite von Hashicorp nachgesehen werden.<br \/>\nDie *.deb Datei kann danach mit dem Befehl:<br \/>\n<code>sudo apt install .\/vagrant*.deb<\/code><br \/>\ninstalliert werden.<\/p>\n<p>F\u00fcr Windows und ebenso f\u00fcr andere Linux Distributionen werden auf der Offiziellen Webseite https:\/\/www.vagrantup.com\/downloads die ben\u00f6tigten Installationsprogramme angeboten.<\/p>\n<p>Bei der Installation unter Windows7 sind leider Probleme aufgetreten, da Vagrant eine PowerShell &gt;= Version 3 ben\u00f6tigt und das nicht mehr mit Windows 7 kompatibel ist.<\/p>\n<p>Sobald Vagrant installiert ist, kann man sich seine Version von der Kommandozeile ausgeben lassen mit:<br \/>\n<code>Vagrant--version<\/code><br \/>\nSofern eine Bash oder eine zsh verwendet wird, kann eine Autovervollst\u00e4ndigung installiert werden.<br \/>\n<code>vagrant autocomplete --bash --zsh<\/code><\/p>\n<p>Eine komplette Anleitung f\u00fcr Linux kann man ebenfalls dieser Webseite entnehmen.<br \/>\nhttps:\/\/linuxize.com\/post\/how-to-install-vagrant-on-ubuntu-20-04\/<\/p>\n<h2>Konfiguration<\/h2>\n<p>Die Konfiguration findet \u00fcber die Datei \u201eVagrantfile\u201c statt.<br \/>\nDarin wird die zu erstellende VM mithilfe von Ruby beschrieben, sodass eine Mehrfachausf\u00fchrung immer zu dem gleichen Ergebnis f\u00fchrt.<br \/>\nBei der Suche nach einem Vagrantfile steigt Vagrant im Dateibaum auf, bis es eins gefunden hat.<br \/>\nAu\u00dferdem hat der Nutzer an diesen Stellen die M\u00f6glichkeit eine zus\u00e4tzliche Konfiguration vorzunehmen.<br \/>\nEin sp\u00e4ter aufgef\u00fchrter Punkt \u00fcberschreibt lediglich abweichende Konfigurationen.<br \/>\n<code><br \/>\n1.\tVagrantfile packaged with the box that is to be used for a given machine.<br \/>\n2.\tVagrantfile in your Vagrant home directory (defaults to ~\/.vagrant.d). This lets you specify some defaults for your system user.<br \/>\n3.\tVagrantfile from the project directory. This is the Vagrantfile that you will be modifying most of the time.<br \/>\n4.\tMulti-machine overrides if any.<br \/>\n5.\tProvider-specific overrides, if any.<br \/>\n<\/code><br \/>\nDie Konfiguration der VM beginnt in einem Vagrantfile mit einem:<br \/>\n<code><br \/>\nVagrant.configure(\"1\") do |config|<br \/>\n# v1 configs...<br \/>\nend<br \/>\n<\/code><\/p>\n<p>Vagrant.configure(&#8222;2&#8220;) do |config|<br \/>\n# v2 configs&#8230;<br \/>\nend<\/p>\n<p>Der hier gezeigte Inhalt kann in einem Vagrantfile stehen, da Vagrant die verschiedenen Konfigurationsversionen in einer Datei zusammenf\u00fcht.<\/p>\n<h1>Abgrenzung \/ Vergleich<\/h1>\n<p>Mit welchen anderen Softwarel\u00f6sungen und -konzepten kann Vagrant verglichen werden?<\/p>\n<ul>\n<li>Nutzung von <strong>CLI-Tools<\/strong> zum Anlegen und Konfigurieren von VMs<\/li>\n<li>Containervirtualisierung mit <strong>Docker<\/strong> zum Isolieren einzelner Anwendungen<\/li>\n<li><strong>Terraform<\/strong> zum Beschreiben von komplexen Infrastrukturen<\/li>\n<li><strong>Kubernetes<\/strong> zur Verwaltung, Konfiguration und Automatisierung von Containern<\/li>\n<\/ul>\n<h2>CLI-Tools<\/h2>\n<p>Hierbei geht es darum, mit Hilfe verschiedener Command Line Interface-Tools (von VirtualBox oder VMware) Virtuelle Maschinen anzulegen und zu konfigurieren. Dies geschieht in der Regel \u00fcber Befehle und Skripte, die manuell ausgearbeitet und ausgef\u00fchrt werden. Der hieraus resultierende Workflow ist f\u00fcr den Entwickler meist aufw\u00e4ndig, da es f\u00fcr die Konfiguration einer VM verschiedene CLI-Programme ben\u00f6tigt. Durch die manuelle Komponente ist die Arbeit mit CLI-Tools auch recht fehleranf\u00e4llig.<\/p>\n<p>Vagrant erweitert die M\u00f6glichkeiten der CLI-Tools um n\u00fctzliche Features, wobei alle Konfigurationen zu einer Virtuellen Maschine in einer Datei (Vagrantfile) festgehalten werden. So k\u00f6nnen beispielsweise synchronisierte Ordner mit dem Hostsystem oder in der VM ben\u00f6tigte Programme, die schon installiert werden sollen, in dem Vagrantfile beschrieben werden, wodurch nach Ausf\u00fchren von vagrant up die Virtuelle Maschine mit genau den beschriebenen Eigenschaften erstellt wird. Das Praktische an Vagrant ist dabei, dass man sich nicht mit den m\u00f6glicherweise unterschiedlichen Versionen der Virtualisierungssoftware auseinandersetzen muss, wobei sich die Befehle der CLI \u00e4ndern k\u00f6nnten. Vagrant erkennt die genutzten Versionen und setzt die korrekten Flags und Befehle. Dadurch k\u00f6nnen Vagrantfiles einfach auf verschiedenen Rechnern mit unterschiedlichen Versionen der Virtualisierungssoftware ausgef\u00fchrt werden, ohne dass eine \u00c4nderung n\u00f6tig ist.<\/p>\n<h2>Docker<\/h2>\n<p>Docker arbeitet mit sogenannten Containern, welche sich von Virtuellen Maschinen unterscheiden. Docker-Container sind im Vergleich zu VMs leichtgewichtig und werden vom Betriebssystem des Hosts abgeschottet. Sie enthalten meist nur eine einzige Anwendung, die beim Hochfahren des Containers gestartet wird, und die dazugeh\u00f6rigen Ressourcen (Datenbank, ben\u00f6tigte Bibliotheken f\u00fcr die Anwendung). Au\u00dferdem haben Docker-Container kein eigenes Betriebssystem und ben\u00f6tigen weniger Ressourcen als VMs, weshalb ein schnelleres Starten und Stoppen m\u00f6glich ist.<\/p>\n<p>Auf Grund dessen muss bei einer Differenzierung zwischen Vagrant und Docker haupts\u00e4chlich auf die Unterschiede von Virtualisierung und Containerisierung geachtet werden. Virtualisierung erm\u00f6glicht es mehreren virtuellen Maschinen, sich ein Hardware-System zu teilen. Jede dieser VMs bekommt ein eigenes Betriebssystem, eigenen Speicher usw. Im Kontext der VM und ihres Betriebssystems k\u00f6nnen dann Anwendungen gestartet werden. Die Containerisierung bietet im Gegensatz dazu eine granularere Aufteilung der Anwendungen und ist leichtgewichtiger. Dadurch k\u00f6nnen Container auch problemlos auf Entwicklungsrechnern verwendet werden (mit VMs ist dies auch m\u00f6glich, jedoch recht ressourcenintensiv). Auch muss beachtet werden, dass bei der Containerisierung nur der Kernel genutzt werden kann, der beim Host-System verf\u00fcgbar ist. Dadurch kann beispielsweise kein Windows-Container auf einem Linux-Host gestartet werden.<\/p>\n<p>Man kann hierbei jedoch auch differenzieren, ohne auf die Unterschiede von VMs und Containern zu achten. Docker ist an sich ein Kommandozeilentool, mit dem eigene Docker-Container verwaltet werden k\u00f6nnen. Vagrant bietet mit seinen CLI-Befehlen einen konsistenten Workflow zum Einrichten von Entwicklungsumgebungen. Daf\u00fcr bietet Vagrant einen Wrapper f\u00fcrs Erstellen von Virtuellen Maschinen mit Virtualisierungssoftware wie VMware oder VirtualBox. Docker hingegen arbeitet eigenst\u00e4ndig und kann durch Tools wie <b>Kubernetes<\/b> erweitert werden<\/p>\n<p>Zusammenfassend kann man sagen, dass sowohl Docker als auch Vagrant eigene Einsatzgebiete haben, f\u00fcr die sie besser geeignet sind.<\/p>\n<h2>Terraform<\/h2>\n<p>Vagrant und Terraform sind beides Projekte von HashiCorp, die unterschiedliche Einsatzgebiete haben. Terraform dient haupts\u00e4chlich dem Beschreiben und Managen von gro\u00dfen Infrastrukturen, die remote oder lokal vorliegen k\u00f6nnen. Dabei wird es als Infrastructure-as-code-Software bezeichnet, was f\u00fcr eine programmierbare Infrastruktur steht, die \u00fcber eine Software erstellt und verwaltet werden kann.<\/p>\n<p>Da bei Terraform unter anderem ein Feature zum Managen von Virtuellen Maschinen integriert ist, k\u00f6nnen Vagrant und Terraform recht schnell verwechselt werden. Vagrant wurde zum automatisierten Erstellen von Entwicklungsumgebungen entwickelt, weshalb es deutlich mehr Features in diese Richtung bietet (HTTP-Tunnel, Synchronisierte Ordner mit dem Hostsystem, &#8230;) als Terraform. Terraform hat ein potentiell gr\u00f6\u00dferes Einsatzgebiet mit ganzen Infrastrukturen, weshalb es sich nur rudiment\u00e4r mit dem Einrichten Virtueller Maschinen befasst.<\/p>\n<h2>Kubernetes<\/h2>\n<p>Kubernetes dient dem Verwalten von Containern und containerisierten Anwendungen. Demzufolge gelten f\u00fcr den Vergleich (von Kubernetes und Vagrant) auch hier die Unterschiede zwischen Containerisierung und Virtualisierung. Wenn man jedoch die grundlegenden Funktionalit\u00e4ten der Anwendungen betrachtet, sind sich Kubernetes und Vagrant in einigen Punkten \u00e4hnlich. Beide Tools sind Open Source und dienen der Verwaltung von Virtuellen Maschinen \/ Containern. Beide Tools sind f\u00fcr das Konfigurieren, Starten und Stoppen der jeweiligen Technologie zust\u00e4ndig und bedienen sich hierf\u00fcr der Kommandozeile und eigenen Konfigurationsdateien. Kubernetes nutzt zur Beschreibung und Gruppierung von Containern das YAML-Format, wohingegen Vagrant eigene Vagrantfiles hat, um Boxes zu erstellen.<\/p>\n<h1>Vor- und Nachteile von Vagrant<\/h1>\n<table>\n<tbody>\n<tr>\n<th>Vorteile<\/th>\n<th>Nachteile<\/th>\n<\/tr>\n<tr>\n<td>Open-Source-Software (MIT Lizenz)<\/td>\n<td>Ben\u00f6tigt externe Virtualisierungssoftware zur Erstellung von Virtuellen Maschinen (z.B. VirtualBox, VMware)<\/td>\n<\/tr>\n<tr>\n<td>Vagrant ist dezentralisiert (jeder kann mit Vagrant Boxes erstellen, die bei jedem anderen Nutzer von Vagrant laufen sollten)<\/td>\n<td>Verschiedene Kombinationen von Vagrantversionen, Betriebssystemversionen und Versionen von Virtualisierungssoftware k\u00f6nnen zu Fehlern f\u00fchren<\/td>\n<\/tr>\n<tr>\n<td>Automatisierung verschiedener VM-Management-Tasks, wie zum Beispiel Installation und Konfiguration<\/td>\n<td>Kompatibilit\u00e4t mit Windows schwierig (auf Windows 7 hat es f\u00fcr uns nicht funktioniert, mit Windows 10?)<\/td>\n<\/tr>\n<tr>\n<td>Umgebungen, die mit den selben Vagrantfiles erstellt wurden, sind i.d.R. exakt gleich, sodass die Entwicklungsumgebungen bei mehreren Entwicklern sich nicht unterscheiden (kein &#8222;Bei meinem System funktioniert es aber!&#8220; mehr)<\/td>\n<td>F\u00fcr kleine Projekte, an denen nur ein Entwickler beteiligt ist, m\u00fcssen Kosten und Nutzen abgewogen werden<\/td>\n<\/tr>\n<tr>\n<td>Erleichtert das Updaten oder Austauschen von Versionen<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1>Demonstration<\/h1>\n<p>In unserem Arbeitsverzeichnis k\u00f6nnen wir mit folgendem Befehl ein vorgefertigtes Vagrantfile herunterladen.<br \/>\nIn desem Fall ein offizielles von HashiCorp bereitgestelltes Vagrantfile f\u00fcr ein Ubuntu 18.04 LTS 64-bit Image.<\/p>\n<pre><code>\r\n    $ vagrant init hashicorp\/bionic64\r\n  <\/code><\/pre>\n<p>Ein Blick in die Datei zeigt die Minimalfassung eines Vagrantfiles. Diese werden wir sp\u00e4ter noch erweitern.<\/p>\n<pre><code>\r\n    Vagrant.configure(\"2\") do |config|\r\n      config.vm.box = \"ubuntu\/bionic64\"\r\n    end\r\n  <\/code><\/pre>\n<p>Mit &#8218;vagrant up&#8216; starten wie die VM. Vagrant l\u00e4dt das Ubuntuimage herunter und startet es as VirtualBox VM.<\/p>\n<pre><code>$ vagrant up<\/code><\/pre>\n<p>Um sicherzustellen, dass alles funktioniert, k\u00f6nnen wir eine SSH-Verbindung zur VM herstellen.<\/p>\n<pre><code>$ vagrant ssh<\/code><\/pre>\n<p>Mit dem Befehl &#8218;logout&#8216; verl\u00e4sst man die SSH-Session. Alternativ m\u00fcsste die VM auch in der GUI von VirtualBox angezeigt werden.<\/p>\n<p>Vagrant synchronisiert den Inhalt des Projektordners (der das Vagrantfile enth\u00e4lt) mit dem Ordner &#8218;\/vagrant&#8216; in der VM. Das erm\u00f6glicht es die VM als virtuelle Entwicklungsumgebung zu verwenden, aber dennoch den bevorzugten Editor auf dem Hostsystem zu verwenden, um Dateien zu bearbeiten.<\/p>\n<p>Die Synchronisation funktioniert in beide Richtungen.<\/p>\n<h2>Aufsetzen eines Webservers<\/h2>\n<p>Als n\u00e4chstes werden wir einen Apache-Webserver in der VM bereitstellen.<\/p>\n<p>Dazu erstellen wir uns erst einmal einen Ordner im Projektverzeichnis.<\/p>\n<pre><code>$ mkdir html<\/code><\/pre>\n<p>Darin erstellen wir die Datei &#8218;index.html&#8216; mit einfachem HTML-Ger\u00fcst.<\/p>\n<pre><code>\r\n    &lt;!DOCTYPE html&gt;\r\n    &lt;html&gt;\r\n      &lt;body&gt;\r\n        &lt;h1&gt;Getting started with Vagrant!&lt;\/h1&gt;\r\n      &lt;\/body&gt;\r\n    &lt;\/html&gt;\r\n  <\/code><\/pre>\n<p>Um Apache in der VM zu installieren k\u00f6nnte wir dies manuell per SSH machen, m\u00fcssten diese Schritte jedoch wiederholen, sobald wir das Image bspw. l\u00f6schen und sp\u00e4ter neu anlegen.<\/p>\n<p>Einfacher geht dies mit einem Shellscript. Dazu legen wir im Projektordner die Datei &#8218;bootstrap.sh&#8216; mit folgendem Inhalt an:<\/p>\n<pre><code>#!\/usr\/bin\/env bash\r\n\r\napt update\r\napt install -y apache2\r\nif ! [ -L \/var\/www ]; then\r\n  rm -rf \/var\/www\r\n  ln -fs \/vagrant \/var\/www\r\nfi<\/code><\/pre>\n<p>Das Script installiert das apache2-Package und erstellt einen Symlink zwischen unserem synchroniserten Ordner und dem Verzeichnis &#8218;\/var\/www&#8216;, wo Apache unsere &#8218;index.html&#8216; finden kann.<\/p>\n<p>Jetzt m\u00fcssen wir Vagrant noch mitteilen, dass dieses Shellscript beim Erstellen des Images ausgef\u00fchrt werden soll. Dazu \u00e4ndern wir das Vagrantfile, wie folgt ab:<\/p>\n<pre><code>\r\nVagrant.configure(\"2\") do |config|\r\n  config.vm.box = \"hashicorp\/bionic64\"\r\n  config.vm.provision :shell, path: \"bootstrap.sh\"\r\nend<\/code><\/pre>\n<p>Da unsere Ubuntu-VM bereits l\u00e4uft, reicht ein reload mit dem &#8218;provision&#8216; Flag, um die \u00c4nderungen anzuwenden.<\/p>\n<pre><code>$ vagrant reload --provision<\/code><\/pre>\n<p>Jetzt sollten wir im Log sehen, dass Apache2 installiert wird.<\/p>\n<h2>Port Forwarding<\/h2>\n<p>Damit die von Apache bereitgestellte Website auch au\u00dferhalb der VM aufgerufen werden kann m\u00fcssen wir ein Port-forwarding f\u00fcr Port 80 einrichten. Dazu f\u00fcgen wir folgende Zeile in das Vagrantfile ein&#8230;<\/p>\n<pre><code>config.vm.network :forwarded_port, guest: 80, host: 4567<\/code><\/pre>\n<p>und laden die VM neu:<\/p>\n<pre><code>$ vagrant reload<\/code><\/pre>\n<p>Jetzt k\u00f6nnen wir auf der Host-Maschine die Website unter <b>http:\/\/127.0.0.1:4567<\/b> aufrufen.<\/p>\n<h2>Beenden einer VM<\/h2>\n<p>Stoppt die VM und speichert deren aktuellen Stand.<\/p>\n<pre><code>$ vagrant suspend<\/code><\/pre>\n<p>Startet die VM und setzt deren gespeicherten Stand fort.<\/p>\n<pre><code>$ vagrant suspend<\/code><\/pre>\n<p>Startet den Shutdownprozess des Betriebssystems in der VM und stoppt die VM.<\/p>\n<pre><code>$ vagrant halt<\/code><\/pre>\n<p>Jetzt startet der Befehl die VM frisch neu.<\/p>\n<pre><code>$ vagrant up<\/code><\/pre>\n<p>Stoppt die VM und l\u00f6scht sie von der Host-Maschine.<\/p>\n<pre><code>$ vagrant destroy<\/code><\/pre>\n<h1>Literaturverzeichnis<\/h1>\n<p>\u201e\u00dcber Ruby,\u201c [Online]. Available: https:\/\/www.ruby-lang.org\/de\/about\/. [Zugriff am 05. Januar 2021].<\/p>\n<p>\u201eVagrant Documentation,\u201c [Online]. Available: https:\/\/www.vagrantup.com\/docs. [Zugriff am 05. Januar 2021].<\/p>\n<p>S. Kumar, \u201eHow To Use Vagrant With Libvirt KVM Provider,\u201c 27. August 2020. [Online]. Available: https:\/\/ostechnix.com\/how-to-use-vagrant-with-libvirt-kvm-provider\/. [Zugriff am 09. Januar 2021].<\/p>\n<p>\u201eHow to Install Vagrant on Ubuntu 20.04,\u201c 02. Juni 2020. [Online]. Available: https:\/\/linuxize.com\/post\/how-to-install-vagrant-on-ubuntu-20-04\/. [Zugriff am 09. Januar 2021].<\/p>\n<p>\u201eVagrant vs. Other Software,\u201c [Online]. Available: https:\/\/www.vagrantup.com\/intro\/vs. [Zugriff am 08. Januar 2021].<\/p>\n<p>J. Palat, \u201eIntroducing Vagrant,\u201c 14. November 2021. [Online]. Available: https:\/\/www.linuxjournal.com\/content\/introducing-vagrant. [Zugriff am 05. Januar 2021].<\/p>\n<h1>Anh\u00e4nge<\/h1>\n<p><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Vortrag_Vagrant.pdf\">Vortrag Vagrant<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gliederung 1. Definition 2. Installation und Konfiguration 3. Abgrenzung \/ Vergleich 4. Vor- und Nachteile 5. Demonstration Definition Vagrant ist<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[11,8,7],"class_list":["post-47","post","type-post","status-publish","format-standard","hentry","category-betriebliche-informationssysteme","tag-infrastruktur","tag-server","tag-virtualisierung"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/47","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=47"}],"version-history":[{"count":53,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/47\/revisions"}],"predecessor-version":[{"id":613,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/47\/revisions\/613"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=47"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=47"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=47"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}