Vagrant
Ziele und Kompetenzen
Grundlagen zur automatisierten Virtualisierung kennen lernen
Motivation

Was ist Vagrant
Tool zum automatisierten Aufsetzen von virtuellen Entwicklungsumgebungen
Die Idee: Entwicklungsumgebung soll dem produktiven System so ähnliche wie möglich sein
Gedankenspiel: Wie groß wäre der Unterschied zwischen Ihrer Entwicklungsumgebung und dem Zielsystem?
Vagrant wurde in Ruby von Mitchel Hashimoto entwickelt
Anwendungsgebiete
Testen von Software in unterschiedlichen Umgebungen und Betriebssystemen
Workflows mit verschiedenen Configuration Management Tools testen (Chef, Puppet, Ansible)
Identische Umgebungen fĂĽr unterschiedliche Entwickler / Team-Mitglieder aufsetzen
Testen von Multi-Server Use Cases automatisieren
Vorteile
Es werden sog. »Basis Images« genutzt, d.h. Betriebssystem muss nicht installiert werden
Einstellungen können konfiguriert werden
AusfĂĽhrung von Automatisierungs-Tools wie Chef, Puppet oder Ansible
Nochmal zur Erinnerung
Wir möchten vermeidbare manuelle Tätigkeiten so gut wie möglich automatisieren
Wozu?
Zeitgewinn
Vermeidung von Fehlern
Reproduzierbarkeit
Grundlagen
Begriffe
Provider
Virtualisierungstechnologien: VirtualBox, Hyper-V, VMWare, Docker, AWS...)
Provisionier:
Configuration Management Tool (Chef, Puppet, Ansible)
Box / Vagrantbox
Vorlage zur Erstellung einer virtuellen Maschine (VM)
Vagrantfile:
Konfigurationsfile fĂĽr Vagrant
Kommandos
box {add|remove|prune..}Fügt eine Box hinzu, entfernt diese etc.global-statusStatus aller Vagrant-UmgebungeninitInitialisiert das aktuelle Verzeichnis für eine BoxhaltSchaltet die virtuelle Maschinen(n) abprovisionFührt den Provisioner gegen die VMs ausreloadNeustart nach ÄnderungensshShell Zugriff auf die MaschineupErstellt und Startet die VM gemäß dem Vagrantfile
Standard Boxes
https://app.vagrantup.com/boxes/search
Ă–ffentliche Boxes sind kostenlos
Persönlicher bzw. Unternehmens-Account ermöglicht das Speichern von privaten Boxes
Multi-Server Setup
Mehrere identische Maschinen möglich:
Vagrant.configure("2") do |config|
# test server
config.vm.define "test" do |test|
db.vm.box = "ubuntu/xenial64"
end
# performance test server
config.vm.define "perf" do |perf|
web.vm.box = "ubuntu/xenial64"
end
endPort Forwarding
Gleiches Verhalten auf allen Maschinen
Standard-Ports auf den virtuellen Maschinen nutzbar
Ports vom Host-System werden weitergeleitet
Vagrant.configure("2") do |config|
...
config.vm.network :forwarded_port, guest: 80, host: 8080
...IaC
am Beispiel der VMBox Einstellungen
Vagrant.configure("2") do |config|
...
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
...Vagrant und Ansible
Ansible als :
Vorteil Playbook kann automatisch gegen Box ausgefĂĽhrt werden
Vagrant.require_version ">= 1.8.0"
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provision "ansible" do |ansible|
ansible.verbose = "v"
ansible.playbook = "playbook.yml"
end
endProvisionierung
bootstrap.shim Verzeichnis des Vagrantfile
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fiBase Box erstellen
Am Beispiel
Jede in VirtualBox erstelle VM kann verwendet werden
Harte Anforderungen Seitens Vagrant
Der erste Netzwerkadapter muss zwingend ein NAT-Adapter sein
MAC Adresse der VM muss bekannt sein, wird später im Vagrantfile eingetragen (
config.vm.base_mac)
Vagrant vs. Docker
Docker: Bauen, ausliefern und betreiben von verteilten Anwendungen
Container laufen im bzw. nutzen das Host-Betriebssystem
Vagrant: Leichtgewichtiges Tool um virtuelle Umgebungen zu konfigurieren und zu erstellen
Virtuelle Maschinen bringen Ihr Betriebssystem mit
Docker kann als Provider fĂĽr Vagrant genutzt werden
Voraussetzungen zur Nutzung von Vagrant
Provider
Z.B. VirtualBox
Vagrant installieren
Vagrant Box downloaden
Last updated