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:

  • 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

  1. 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

  1. vagrant box add samba package.box
  2. vagrant box add dhcp package.box
  3. vagrant box add dns package.box
  4. vagrant box add ldap package.box
  5. vagrant box add ftp package.box
  6. vagrant box add db package.box
  7. vagrant box add git package.box
  8. vagrant box add svn package.box
  9. vagrant box add web package.box
  10. vagrant box add jenkins package.box



Nun legen wir uns einen rudimentäre Vagrantfile an und tragen unsere Maschinen ein:


RUBY code

  1. # -*- mode: ruby -*-
  2. # vi: set ft=ruby :
  3.  
  4. # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
  5. VAGRANTFILE_API_VERSION = "2"
  6.  
  7. Vagrant.configure(VAGRANTFILE_API_VERSION) do
    config
  8.  
  9. config.vm.define "samba" do
    samba
  10. samba.ssh.private_key_path = "~/.ssh/id_rsa"
  11. samba.vm.box = "samba"
  12. end
  13.  
  14. config.vm.define "dhcp" do
    dhcp
  15. dhcp.ssh.private_key_path = "~/.ssh/id_rsa"
  16. dhcp.vm.box = "dhcp"
  17. end
  18.  
  19. config.vm.define "dns" do
    dns
  20. dns.ssh.private_key_path = "~/.ssh/id_rsa"
  21. dns.vm.box = "dns"
  22. end
  23.  
  24. config.vm.define "ldap" do
    ldap
  25. ldap.ssh.private_key_path = "~/.ssh/id_rsa"
  26. ldap.vm.box = "ldap"
  27. end
  28.  
  29. config.vm.define "ftp" do
    ftp
  30. ftp.ssh.private_key_path = "~/.ssh/id_rsa"
  31. ftp.vm.box = "ftp"
  32. end
  33.  
  34. config.vm.define "db" do
    db
  35. db.ssh.private_key_path = "~/.ssh/id_rsa"
  36. db.vm.box = "db"
  37. end
  38.  
  39. config.vm.define "git" do
    git
  40. git.ssh.private_key_path = "~/.ssh/id_rsa"
  41. git.vm.box = "git"
  42. end
  43.  
  44. config.vm.define "svn" do
    svn
  45. svn.ssh.private_key_path = "~/.ssh/id_rsa"
  46. svn.vm.box = "svn"
  47. end
  48.  
  49. config.vm.define "web" do
    web
  50. web.ssh.private_key_path = "~/.ssh/id_rsa"
  51. web.vm.box = "web"
  52. end
  53.  
  54. config.vm.define "jenkins" do
    jenkins
  55. jenkins.ssh.private_key_path = "~/.ssh/id_rsa"
  56. jenkins.vm.box = "jenkins"
  57. end
  58. end



wir haben nun die Möglichkeit eine der Boxen explizit zu starten


BASH code

  1. vagrant up samba


und auch so wieder anzuhalten

BASH code

  1. vagrant halt samba


oder alle miteinander starten, indem wir in dem Verzeichnis wo unser Vagrantfile liegt, einfach folgenden Befehl ausführen:

BASH code

  1. vagrant up


und natürlich analog dazu auch wieder beenden


BASH code

  1. vagrant halt



Welche Boxen laufen sehen wir über folgenden Befehl:

BASH code

  1. vagrant status


man kann sich das aber auch mit Hilfe der VirtualBox Oberfläche ansehen:

Bild Oracle VM VirtualBox Manager_010.png nicht gefunden !



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

  1. 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.