How To: Vagrant als Multi Machine System aufsetzen
mastercad
17.06.2014 15:36:04
Im Vorigen Kapitel habe ich beschrieben wie wir uns unsere eigene default Package für Vagrant aufsetzen und damit eine eigene Box erstellen, heute möchte ich zeigen, wie einfach es ist, sich ein Multi Machine System aufzusetzen um jeden Service als autonome Kapsel laufen lasse zu können.
Ich habe bei mir im Netzwerk einen Server mit verschiedenen Diensten drauf und immer wenn ich gezwungen bin größere Umbaumaßnahmen durchzuführen, muss ich alle Dienste auch wieder neu einrichten, das frißt Zeit, auch wenn Übung den Meister macht ;)
Zu dem kann man diese Boxen auch mit Kollegen und Freunden sharen und sie damit in den Genuß diverser Services bringen ohne das sie sich selbst die Arbeit machen müssen.
Ausgangslage sind folgende Services, die alle ein eigenes System bekommen sollen:
Wie wir die eigenen Services auf den Maschinen an sich installieren, dazu kommen wir in weiteren Tutorials, hier geht es erst einmal darum, Vagrant dazu zu bewegen, die Maschinen zu starten und wie wir uns diese jeweiligen Maschinen überhaupt anlegen.
Wir legen und mit folgendem Befehl eine Box an:
Wobei package.box für das von uns erstellte Paket steht oder wahlweise auch ein package von diversen Drittanbietern sein kann.
dem zu folge können wir jetzt nacheinander unsere Boxen anlegen :
Nun legen wir uns einen rudimentäre Vagrantfile an und tragen unsere Maschinen ein:
wir haben nun die Möglichkeit eine der Boxen explizit zu starten
und auch so wieder anzuhalten
oder alle miteinander starten, indem wir in dem Verzeichnis wo unser Vagrantfile liegt, einfach folgenden Befehl ausführen:
und natürlich analog dazu auch wieder beenden
Welche Boxen laufen sehen wir über folgenden Befehl:
man kann sich das aber auch mit Hilfe der VirtualBox Oberfläche ansehen:
Vagrant benennt unsere Box automatisch beim ersten start um und hinterlegt sie bei VirtualBox, da dies als Basis zum starten der VM's genutzt wird. Jede unserer Boxen trägt das Prefix vagrant_ gefolgt vom namen der Box und einem timestamp den vagrant erstellt.
Verbinden können wir uns auch ganz entspannt auf die Boxen, wir müssen uns dazu nicht die jeweiligen SSH-Ports der Boxen merken, übrigen setzt Vagrant automastisch den SSH Port der Box auf einen anderen Port, wenn dieser bereits von einer Box belegt ist.
Auf eine Spezielle Box verbinden wir uns wie gesagt per
Das wars fürs erste, in weiteren Tutorials werden wir uns mit dem optimieren der Boxen über das VagrantFile befassen und außerdem kennen lernen, wie man die jeweiligen Dienste aufsetzt.
Ich habe bei mir im Netzwerk einen Server mit verschiedenen Diensten drauf und immer wenn ich gezwungen bin größere Umbaumaßnahmen durchzuführen, muss ich alle Dienste auch wieder neu einrichten, das frißt Zeit, auch wenn Übung den Meister macht ;)
Zu dem kann man diese Boxen auch mit Kollegen und Freunden sharen und sie damit in den Genuß diverser Services bringen ohne das sie sich selbst die Arbeit machen müssen.
Ausgangslage sind folgende Services, die alle ein eigenes System bekommen sollen:
- Samba
- DHCP
- DNS
- LDAP
- FTP/SFTP
- DB Server
- GIT
- SVN
- WEB (Apache)
- Jenkins
Wie wir die eigenen Services auf den Maschinen an sich installieren, dazu kommen wir in weiteren Tutorials, hier geht es erst einmal darum, Vagrant dazu zu bewegen, die Maschinen zu starten und wie wir uns diese jeweiligen Maschinen überhaupt anlegen.
Wir legen und mit folgendem Befehl eine Box an:
BASH code
vagrant box add MaschineName package.box
Wobei package.box für das von uns erstellte Paket steht oder wahlweise auch ein package von diversen Drittanbietern sein kann.
dem zu folge können wir jetzt nacheinander unsere Boxen anlegen :
BASH code
vagrant box add samba package.box vagrant box add dhcp package.box vagrant box add dns package.box vagrant box add ldap package.box vagrant box add ftp package.box vagrant box add db package.box vagrant box add git package.box vagrant box add svn package.box vagrant box add web package.box vagrant box add jenkins package.box
Nun legen wir uns einen rudimentäre Vagrantfile an und tragen unsere Maschinen ein:
RUBY code
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do
config config.vm.define "samba" do
samba samba.ssh.private_key_path = "~/.ssh/id_rsa" samba.vm.box = "samba" end config.vm.define "dhcp" do
dhcp dhcp.ssh.private_key_path = "~/.ssh/id_rsa" dhcp.vm.box = "dhcp" end config.vm.define "dns" do
dns dns.ssh.private_key_path = "~/.ssh/id_rsa" dns.vm.box = "dns" end config.vm.define "ldap" do
ldap ldap.ssh.private_key_path = "~/.ssh/id_rsa" ldap.vm.box = "ldap" end config.vm.define "ftp" do
ftp ftp.ssh.private_key_path = "~/.ssh/id_rsa" ftp.vm.box = "ftp" end config.vm.define "db" do
db db.ssh.private_key_path = "~/.ssh/id_rsa" db.vm.box = "db" end config.vm.define "git" do
git git.ssh.private_key_path = "~/.ssh/id_rsa" git.vm.box = "git" end config.vm.define "svn" do
svn svn.ssh.private_key_path = "~/.ssh/id_rsa" svn.vm.box = "svn" end config.vm.define "web" do
web web.ssh.private_key_path = "~/.ssh/id_rsa" web.vm.box = "web" end config.vm.define "jenkins" do
jenkins jenkins.ssh.private_key_path = "~/.ssh/id_rsa" jenkins.vm.box = "jenkins" end end
wir haben nun die Möglichkeit eine der Boxen explizit zu starten
BASH code
vagrant up samba
und auch so wieder anzuhalten
BASH code
vagrant halt samba
oder alle miteinander starten, indem wir in dem Verzeichnis wo unser Vagrantfile liegt, einfach folgenden Befehl ausführen:
BASH code
vagrant up
und natürlich analog dazu auch wieder beenden
BASH code
vagrant halt
Welche Boxen laufen sehen wir über folgenden Befehl:
BASH code
vagrant status
man kann sich das aber auch mit Hilfe der VirtualBox Oberfläche ansehen:
Vagrant benennt unsere Box automatisch beim ersten start um und hinterlegt sie bei VirtualBox, da dies als Basis zum starten der VM's genutzt wird. Jede unserer Boxen trägt das Prefix vagrant_ gefolgt vom namen der Box und einem timestamp den vagrant erstellt.
Verbinden können wir uns auch ganz entspannt auf die Boxen, wir müssen uns dazu nicht die jeweiligen SSH-Ports der Boxen merken, übrigen setzt Vagrant automastisch den SSH Port der Box auf einen anderen Port, wenn dieser bereits von einer Box belegt ist.
Auf eine Spezielle Box verbinden wir uns wie gesagt per
BASH code
vagrant ssh samba
Das wars fürs erste, in weiteren Tutorials werden wir uns mit dem optimieren der Boxen über das VagrantFile befassen und außerdem kennen lernen, wie man die jeweiligen Dienste aufsetzt.