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

Virtuelle Entwicklungsumgebungen mit Vagrant

Virtuelle Entwicklungsumgebungen mit Vagrant

Den ersten Teil des Vortrags nimmt die Einführung in das Konzept von Vagrant und dessen Installation ein. Anhand eines einfachen Beispiels werden Funktion und Nutzung erläutert.

Durch den Einsatz von Provisioning Tools wie Chef oder Puppet können vorhandene Konfigurationen der Produktiv-Systeme zum Setup der Virtuellen Maschinen genutzt werden. So lassen sich auch komplexe Cluster-Setups aufbauen. Auch dies wird mit Beispielen demonstriert.

Abschließend wird darauf eingegangen, wie man selbst Vagrant Boxen erstellen kann und wie die Unterstützung für die unterschiedlichen Virtualisierer aussieht.

Die Teilnehmer sollten Grundkenntnisse in den Bereichen Linux, Virtuelle Maschinen und Provisioning haben.

More Decks by Markus Zapke-Gründemann

Other Decks in Programming

Transcript

  1. Markus Zapke-Gründemann • Softwareentwickler seit 2001 • Softwareentwicklung mit Python,

    Django und Mercurial • Selbstständig seit 2008 • Seit 2011 Geschäftsführer bei Inqbus
  2. Vagrant installieren 1. Provider installieren (z.B. VirtualBox) 2. Vagrant Paket

    installieren (OS X, Windows, Debian, RedHat und Arch Linux verfügbar)
  3. Vagrant nutzen I $ vagrant box add precise32 http://files.vagrantup.com/precise32.box $

    vagrant init precise32 $ vagrant up $ ls -A .vagrant Vagrantfile
  4. Vagrantfile II $ cat Vagrantfile Vagrant.configure("2") do |config| config.vm.box =

    "precise32" # Port forwarding for Django config.vm.network :forwarded_port, guest: 8000, host: 8080 end
  5. Vagrant nutzen II $ vagrant ssh vagrant@vagrant-precise32:~$ ls -A /vagrant

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

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

    .vagrant Vagrantfile vagrant@vagrant-precise32:~$ logout $ vagrant halt $ vagrant destroy
  8. Vagrant Box $ vagrant box list precise32 (virtualbox) $ ls

    ~/.vagrant.d/boxes precise32 $ ls ~/.vagrant.d/boxes/precise32/virtualbox Vagrantfile box-disk1.vmdk box.ovf metadata.json
  9. Vagrant Box $ vagrant box list precise32 (virtualbox) $ ls

    ~/.vagrant.d/boxes precise32 $ ls ~/.vagrant.d/boxes/precise32/virtualbox Vagrantfile box-disk1.vmdk box.ovf metadata.json $ vagrant box remove precise32
  10. Multi-Provider $ vagrant box add precise32 http://files.vagrantup.com/precise32.box $ vagrant box

    list precise32 (virtualbox) precise32 (vmware_fusion) $ vagrant up --provider=vmware_fusion
  11. Provisioning: Puppet II $ cat manifests/default.pp group { 'puppet': ensure

    => present, } class basic_setup { exec { 'apt-get update': path => "/usr/bin", } package { 'vim': ensure => present, } package { 'sqlite3': ensure => present, } } include basic_setup
  12. VeeWee I • VeeWee erstellt Boxen für • Vagrant •

    VMWare • KVM • Parallels $ gem install veewee
  13. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot'
  14. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot'
  15. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot' $ ls definitions/debian7 definition.rb postinstall.sh preseed.cfg
  16. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot' $ ls definitions/debian7 definition.rb postinstall.sh preseed.cfg $ bundle exec veewee vbox build 'debian7'
  17. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot' $ ls definitions/debian7 definition.rb postinstall.sh preseed.cfg $ bundle exec veewee vbox build 'debian7' $ bundle exec veewee vbox validate 'debian7'
  18. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot' $ ls definitions/debian7 definition.rb postinstall.sh preseed.cfg $ bundle exec veewee vbox build 'debian7' $ bundle exec veewee vbox validate 'debian7' $ bundle exec veewee vbox export 'debian7'
  19. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot' $ ls definitions/debian7 definition.rb postinstall.sh preseed.cfg $ bundle exec veewee vbox build 'debian7' $ bundle exec veewee vbox validate 'debian7' $ bundle exec veewee vbox export 'debian7' $ vagrant box add 'debian7' debian7.box
  20. VeeWee II $ bundle exec veewee vbox templates | grep

    -i debian-7 bundle exec veewee vbox define '' 'Debian-7.0-amd64-netboot' bundle exec veewee vbox define '' 'Debian-7.0-i386-netboot' $ bundle exec veewee vbox define 'debian7' 'Debian-7.0-amd64-netboot' $ ls definitions/debian7 definition.rb postinstall.sh preseed.cfg $ bundle exec veewee vbox build 'debian7' $ bundle exec veewee vbox validate 'debian7' $ bundle exec veewee vbox export 'debian7' $ vagrant box add 'debian7' debian7.box $ vagrant init debian7