tech talk - vagrant

31
Thomas Krille

Upload: thomas-krille

Post on 16-Jul-2015

98 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Tech Talk - Vagrant

Thomas Krille

Page 2: Tech Talk - Vagrant

“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

Page 3: Tech Talk - Vagrant

Orchestrations-Tool für VMsProvider: VirtualBox, VMware, AWS, libvirt, Docker …Provisioner: Shell Scripts, Puppet, Ansible, Docker …

RubyPlugins

Was ist Vagrant?

Page 4: Tech Talk - Vagrant

2010 von Mitchell HashimotoGründung von HashiCorp 2012

Open Source, MIT LicenseLinux, Mac OS X, Windows

Was ist Vagrant?

Page 5: Tech Talk - Vagrant

“development environments”

Was ist Vagrant?

Page 6: Tech Talk - Vagrant

isoliertreproduzierbar

konsistentEinweg-VMs

Einheitlicher WorkflowEinfache Installation

Warum Vagrant?

Page 7: Tech Talk - Vagrant

DevsOps

DesignerQS...

Warum Vagrant?

Page 8: Tech Talk - Vagrant

Vagrantfile: “Saat” für VMsRuby-DSL

data-as-codeähnlich Dockerfile

Vagrantfile

Page 9: Tech Talk - Vagrant

Demo

Vagrantfile

Page 10: Tech Talk - Vagrant

$ vagrant init ubuntu/trusty64$ vagrant up$ vagrant ssh$ vagrant destroy

Vagrant.configure(2) do |config| config.vm.box = 'ubuntu/trusty64'

end

Vagrantfile

Page 11: Tech Talk - Vagrant

fertige Templates für VMsVersioniert, Gebunden an Provider

Standard-Quelle: HashiCorps Atlas box catalogSelber machen: Packer

Beliebige weitere Quellen (Lokal, Web, ...)

Vagrantfile - Boxes

Page 12: Tech Talk - Vagrant

Technische Einstellungen der VMSpeicher, 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

Page 13: Tech Talk - Vagrant

Dateien mit Host teilenStandard: 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

Page 14: Tech Talk - Vagrant

reproduzierbares AufsetzenMit dabei: Datei kopieren, Shell-Skript, Puppet,

Ansible, Docker, Chef, Salt, CFEngineWeitere über Plugins

Vagrantfile - Provisioners

Page 15: Tech Talk - Vagrant

Datei kopieren

Vagrant.configure(2) do |config|

... config.vm.provision :file, :source => 'my_file', :destination => '/tmp/my_file' ...

end

Vagrantfile - File Provisioner

Page 16: Tech Talk - Vagrant

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

Page 17: Tech Talk - Vagrant

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)

Page 18: Tech Talk - Vagrant

Management Interface + NATPort Forwarding, Private Network, Bridge

DHCP oder Static IPMAC-Adressen

Mehrere Netzwerke möglich

Vagrantfile - Network

Page 19: Tech Talk - Vagrant

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

Page 20: Tech Talk - Vagrant

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

Page 21: Tech Talk - Vagrant

Bridge

Vagrant.configure(2) do |config|

... config.vm.network :public_network, :bridge => 'eth0', :ip => '192.168.1.2'

...

end

Vagrantfile - Network

Page 22: Tech Talk - Vagrant

Demo

Vagrantfile

Page 23: Tech Talk - Vagrant

Installation von Dockerdocker rundocker pulldocker build

Docker Provisioner

Page 24: Tech Talk - Vagrant

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

Page 25: Tech Talk - Vagrant

Demo

Docker Provisioner

Page 26: Tech Talk - Vagrant

Standby: vagrant suspendPoweroff: vagrant halt

Zerstören: vagrant destroy

VM Beenden

Page 27: Tech Talk - Vagrant

Sicherheit von Vagrant==

Sicherheit von Provider

aber ...

Security

Page 28: Tech Talk - Vagrant

Vertrauen in BoxSelber machen: Packer

Wie bei Docker Hub, Maven Central, …

Security

Page 29: Tech Talk - Vagrant

vagrant user == rootPasswortloses sudoPasswort: vagrant

root-Passwort: vagrantAber: frische, einzigartige SSH-Keys

Das ist gewollt!

Security

Page 30: Tech Talk - Vagrant

Externe KonfigurationMulti VM EnvironmentsAusnutzen von RubyZusätzlicher Storage

-> Lightning Talk am 4. Mai 2015

Advanced Vagrant

Page 31: Tech Talk - Vagrant

• 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