Tech Talk - Vagrant

585 Aufrufe

Veröffentlicht am

Entwicklungsteams stehen heutzutage unter enormen Zeitdruck, da gilt: "In the new world, it is not the big fish which eats the small fish, it’s the fast fish which eats the slow fish" (Klaus Schwab, Founder and Executive Chairman of the World Economic Forum). Weiterhin muss Software gegen Testsysteme entwickelt und getestet werden, die soweit wie möglich an Produktionssysteme angelehnt sind, um Aussagen wie "Runs on my machine" endgültig abzuwürgen. Aufgrund des Zeitdrucks müssen diese Testsysteme sehr schnell aufgesetzt und auch wieder zerstört werden können. Vagrant versucht diese Probleme zu lösen, indem es vorhandene Virtualisierungs- und Provisionierungs-Tools orchestriert und damit Entwicklern die Möglichkeit bietet Testsysteme lokal und in "self-service" zu verwalten. Dieser TechTalk soll Entwicklern eine Einführung in die Konzepte und Benutzung von Vagrant geben.

Veröffentlicht in: Software
1 Kommentar
1 Gefällt mir
Statistik
Notizen
  • Examples can be found here: https://github.com/tkrille/tech-talk-vagrant
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
Keine Downloads
Aufrufe
Aufrufe insgesamt
585
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
5
Kommentare
1
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Tech Talk - Vagrant

  1. 1. Thomas Krille
  2. 2. “Vagrant is a tool for building complete development environments. [...] Vagrant lowers development environment setup time [...] and makes the "works on my machine" excuse a relic of the past.” Was ist Vagrant? Quelle: https://www.vagrantup.com/about.html
  3. 3. Orchestrations-Tool für VMs Provider: VirtualBox, VMware, AWS, libvirt, Docker … Provisioner: Shell Scripts, Puppet, Ansible, Docker … Ruby Plugins Was ist Vagrant?
  4. 4. 2010 von Mitchell Hashimoto Gründung von HashiCorp 2012 Open Source, MIT License Linux, Mac OS X, Windows Was ist Vagrant?
  5. 5. “development environments” Was ist Vagrant?
  6. 6. isoliert reproduzierbar konsistent Einweg-VMs Einheitlicher Workflow Einfache Installation Warum Vagrant?
  7. 7. Devs Ops Designer QS ... Warum Vagrant?
  8. 8. Vagrantfile: “Saat” für VMs Ruby-DSL data-as-code ähnlich Dockerfile Vagrantfile
  9. 9. Demo Vagrantfile
  10. 10. $ vagrant init ubuntu/trusty64 $ vagrant up $ vagrant ssh $ vagrant destroy Vagrant.configure(2) do |config| config.vm.box = 'ubuntu/trusty64' end Vagrantfile
  11. 11. fertige Templates für VMs Versioniert, Gebunden an Provider Standard-Quelle: HashiCorps Atlas box catalog Selber machen: Packer Beliebige weitere Quellen (Lokal, Web, ...) Vagrantfile - Boxes
  12. 12. Technische Einstellungen der VM Speicher, CPUs, … Provider spezifische Einstellungen Vagrant.configure(2) do |config| ... config.vm.provider :virtualbox do |vb| vb.memory = 1024 vb.cpus = 2 vb.gui = true end ... end Vagrantfile - Provider Settings
  13. 13. Dateien mit Host teilen Standard: Projektverzeichnis unter /vagrant verschiedene Typen: VirtualBox, NFS, RSync, SMB Vagrant.configure(2) do |config| ... config.vm.synced_folder 'target/', '/media/wars' config.vm.synced_folder '.', '/vagrant', :disabled => true ... end Vagrantfile - Synced Folders
  14. 14. reproduzierbares Aufsetzen Mit dabei: Datei kopieren, Shell-Skript, Puppet, Ansible, Docker, Chef, Salt, CFEngine Weitere über Plugins Vagrantfile - Provisioners
  15. 15. Datei kopieren Vagrant.configure(2) do |config| ... config.vm.provision :file, :source => 'my_file', :destination => '/tmp/my_file' ... end Vagrantfile - File Provisioner
  16. 16. Shell-Skript ausführen Vagrant.configure(2) do |config| ... config.vm.provision :shell, :path => 'bootstrap.sh' config.vm.provision :shell, :inline => 'apt-get install tomcat7' ... end Vagrantfile - Shell Provisioner
  17. 17. Puppet-Run starten ohne Master Vagrant.configure(2) do |config| ... config.vm.provision :puppet do |puppet| puppet.manifests_path = 'puppet/manifests' puppet.module_path = 'puppet/modules' puppet.options = '--test' end ... end Vagrantfile - Puppet Provisioner (apply)
  18. 18. Management Interface + NAT Port Forwarding, Private Network, Bridge DHCP oder Static IP MAC-Adressen Mehrere Netzwerke möglich Vagrantfile - Network
  19. 19. Port Forwarding Vagrant.configure(2) do |config| ... config.vm.network :forwarded_port, :guest => 5432, :host => 5432 config.vm.network :forwarded_port, :guest => 8080, :host => 8080 ... end Vagrantfile - Network
  20. 20. Private Network Vagrant.configure(2) do |config| ... config.vm.network :private_network, :type => 'dhcp' config.vm.network :private_network, :ip => '192.168.20.2' ... end Vagrantfile - Network
  21. 21. Bridge Vagrant.configure(2) do |config| ... config.vm.network :public_network, :bridge => 'eth0', :ip => '192.168.1.2' ... end Vagrantfile - Network
  22. 22. Demo Vagrantfile
  23. 23. Installation von Docker docker run docker pull docker build Docker Provisioner
  24. 24. docker run Vagrant.configure(2) do |config| ... config.vm.provision :docker do |docker| docker.run 'osiam', :image => 'osiamorg/osiam:1.3.2', :args => '-v /vagrant:/media/vagrant -p 8080:8080 -p 5432:5432' end ... end Docker Provisioner
  25. 25. Demo Docker Provisioner
  26. 26. Standby: vagrant suspend Poweroff: vagrant halt Zerstören: vagrant destroy VM Beenden
  27. 27. Sicherheit von Vagrant == Sicherheit von Provider aber ... Security
  28. 28. Vertrauen in Box Selber machen: Packer Wie bei Docker Hub, Maven Central, … Security
  29. 29. vagrant user == root Passwortloses sudo Passwort: vagrant root-Passwort: vagrant Aber: frische, einzigartige SSH-Keys Das ist gewollt! Security
  30. 30. Externe Konfiguration Multi VM Environments Ausnutzen von Ruby Zusätzlicher Storage -> Lightning Talk am 4. Mai 2015 Advanced Vagrant
  31. 31. • https://www.vagrantup.com/ • https://docs.vagrantup.com/ • Vagrant: Up and Running (O'Reilly Media) http://shop.oreilly.com/product/0636920026358.do • Beispiele zum Talk https://github.com/tkrille/tech-talk-vagrant Links

×