Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Virtuelle Entwicklungsumgebungen mit Vagrant

Virtuelle Entwicklungsumgebungen mit Vagrant

Oft benötigt man für verschiedene Projekte ganz unterschiedliche Bibliotheken, Dienste und Werkzeuge. Alle Abhängigkeiten auf einer Maschine zu installieren kann schnell anstrengend bis unmöglich werden. Hier kommt Vagrant ins Spiel: Mit Hilfe von Vagrant kann man einfach und schnell Virtuelle Maschinen als Entwicklungsumgebungen erstellen, konfigurieren und benutzen.

Durch die Nutzung von (vorhandenen) Provisioning Tools wie Chef oder Puppet kann man vorhandene Konfigurationen von Produktiv-System zum Setup der Virtuellen Maschinen nutzen. Außerdem lassen sich mit Vagrant auch komplexe Cluster-Setups auf dem eigenen Rechner aufbauen.

Markus Zapke-Gründemann

October 31, 2012
Tweet

More Decks by Markus Zapke-Gründemann

Other Decks in Programming

Transcript

  1. Übersicht • Vorstellung • Was ist Vagrant? • Warum Vagrant?

    • Installation • Anwendung • Weiterentwicklung
  2. Markus Zapke-Gründemann • Softwareentwickler seit 2001 • Softwareentwicklung mit Python,

    Django und Mercurial • Selbstständig seit 2008 • Seit 2011 Geschäftsführer bei Inqbus
  3. Vagrant • Verwaltung von Virtuellen Maschinen • Basiert auf VirtualBox

    • Geschrieben in Ruby Visit me at vagrantup.com
  4. Warum Vagrant? • Zu viele Programmiersprachen, Bibliotheken, Datenbanken, Message Queues,

    Frameworks, … • Unterschiedliche Versionen oft schwer kombinierbar • Arbeit und Zeit sparen - Wissen anderer nutzen
  5. Vagrant installieren 1. VirtualBox installieren 2. Vagrant Pakete für OS

    X, Windows, Debian, RedHat und Arch Linux verfügbar oder $ gem install vagrant
  6. Vagrant nutzen I $ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box $

    vagrant init lucid32 $ vagrant up $ ls -A .vagrant Vagrantfile
  7. Vagrantfile II $ cat Vagrantfile Vagrant::Config.run do |config| config.vm.box =

    "lucid32" # Port forwarding for Django config.vm.forward_port 8000, 8000 end
  8. Vagrant nutzen II $ vagrant ssh vagrant@vagrant-lucid32:~$ ls -A /vagrant

    .vagrant Vagrantfile vagrant@vagrant-lucid32:~$ logout
  9. Vagrant nutzen II $ vagrant ssh vagrant@vagrant-lucid32:~$ ls -A /vagrant

    .vagrant Vagrantfile vagrant@vagrant-lucid32:~$ logout $ vagrant halt
  10. Vagrant nutzen II $ vagrant ssh vagrant@vagrant-lucid32:~$ ls -A /vagrant

    .vagrant Vagrantfile vagrant@vagrant-lucid32:~$ logout $ vagrant halt $ vagrant destroy
  11. Vagrant Box $ vagrant box list lucid32 $ ls ~/.vagrant.d/boxes

    lucid32 $ ls ~/.vagrant.d/boxes/lucid32 Vagrantfile box-disk1.vmdk box.ovf
  12. Vagrant Box $ vagrant box list lucid32 $ ls ~/.vagrant.d/boxes

    lucid32 $ ls ~/.vagrant.d/boxes/lucid32 Vagrantfile box-disk1.vmdk box.ovf $ vagrant box remove lucid32
  13. Provisioning: Puppet II $ cat manifests/default.pp group { 'puppet': ensure

    => present, } class basic_setup { exec { 'apt-get update': command => '/usr/bin/apt-get update' } package { 'vim': ensure => present, } package { 'sqlite3': ensure => present, } } include basic_setup
  14. Provisioning: Chef I $ cat Vagrantfile Vagrant::Config.run do |config| config.vm.box

    = "lucid32" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "basesetup" end end
  15. Provisioning: Chef II $ cat cookbooks/basesetup/recipes/default.rb execute "apt-get-update" do command

    "apt-get update" ignore_failure true end %w(vim sqlite3).each do |pkg| package(pkg) do action :install end end
  16. Eigene Box mit VeeWee erstellen I • VeeWee: https://github.com/jedi4ever/veewee •

    Box erstellen für • Vagrant • VMWare • KVM $ gem install veewee
  17. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot'
  18. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot'
  19. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot' $ ls definitions/debian-60 definition.rb postinstall.sh preseed.cfg
  20. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot' $ ls definitions/debian-60 definition.rb postinstall.sh preseed.cfg $ vagrant basebox build 'debian-60'
  21. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot' $ ls definitions/debian-60 definition.rb postinstall.sh preseed.cfg $ vagrant basebox build 'debian-60' $ vagrant basebox validate 'debian-60'
  22. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot' $ ls definitions/debian-60 definition.rb postinstall.sh preseed.cfg $ vagrant basebox build 'debian-60' $ vagrant basebox validate 'debian-60' $ vagrant basebox export 'debian-60'
  23. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot' $ ls definitions/debian-60 definition.rb postinstall.sh preseed.cfg $ vagrant basebox build 'debian-60' $ vagrant basebox validate 'debian-60' $ vagrant basebox export 'debian-60' $ vagrant box add 'debian-60' debian-60.box
  24. Eigene Box mit VeeWee erstellen II $ vagrant basebox templates|grep

    debian vagrant basebox define '' 'Debian-6.0.1a-amd64-netboot' vagrant basebox define '' 'Debian-6.0.1a-i386-netboot' $ vagrant basebox define 'debian-60' 'Debian-6.0.1a-amd64-netboot' $ ls definitions/debian-60 definition.rb postinstall.sh preseed.cfg $ vagrant basebox build 'debian-60' $ vagrant basebox validate 'debian-60' $ vagrant basebox export 'debian-60' $ vagrant box add 'debian-60' debian-60.box $ vagrant init debian-60
  25. branch machine-abstraction Merge mit master am 19.8.2012: Möglichkeit Plugins für

    neue „Provider“ zu schreiben. https://github.com/mitchellh/vagrant/commit/ 391dc392675c73518ebf04252d824fe916e8860b